유니티에서 PlayerPrefs 클래스를 사용한 간단한 데이터 저장(정수형, 실수형, 문자열)
PlayerPrefs 클래스는 게임 데이터를 간편하게 저장하고 불러오는 데 사용합니다. 게임에서 데이터를 저장하면 프로그램이 종료되어도 해당 값들이 유지되며 다음에 실행했을 때 다시 불러오기 할수있습니다. 저장할 수 있는 데이터 형식은 정수형(int), 실수형(float), 문자열(string)이며 주로 게임의 간단한 진행 상태 및 기본 설정(스테이지 클리어 여부, 획득한 아이템, 점수, 기타)등의 소규모 데이터를 저장할 때 사용할수있습니다.
https://docs.unity3d.com/ScriptReference/PlayerPrefs.html
PlayerPrefs를 사용하여 보안이 필요한 데이터를 저장하지말것을 권장합니다
(디바이스에 암호화 없이 평문으로 저장되기 때문에 쉽게 접근이 가능)
PlayerPrefs 클래스의 함수 사용 예시
PlayerPrefs.SetInt("PlayerScore", 100);
문자열 키(Key)에 정수 값을 설정합니다.
int score = PlayerPrefs.GetInt("PlayerScore");
키의 정수 값을 불러오기합니다. 해당 키가 없으면 기본값(defaultValue, 0)을 반환합니다.
PlayerPrefs.SetFloat("PlayerSpeed", 1.5f);
키에 실수를 설정합니다.
float speed = PlayerPrefs.GetFloat("PlayerSpeed", 2.0f);
키의 실수 값을 불러오기합니다. 키가 존재하지 않을 경우 기본값으로 설정한 2.0f가 반환됩니다.
PlayerPrefs.SetString("PlayerName", "JohnDoe");
string playerName = PlayerPrefs.GetString("PlayerName", "Unknown");
키에 문자열을 설정하고 불러오기합니다.
string str = keyName;
if (PlayerPrefs.HasKey(str))
{
Debug.Log ("The Key " + str + "exists");
}
특정 키가 존재하는지 확인합니다.키가 존재하면 true를 반환하고 존재하지 않으면 false를 반환합니다.
PlayerPrefs.DeleteKey("PlayerScore");
해당 키를 PlayerPrefs에서 제거합니다.
PlayerPrefs.DeleteAll();
PlayerPrefs에서 모든 키와 값을 제거합니다
PlayerPrefs.Save();
일반적으로 유니티는 OnApplicationQuit()에서 PlayerPrefs를 자동으로 저장합니다. Save 함수를 사용하면 즉시 데이터를 저장하고 디스크에 기록합니다(수동 저장)
데이터의 저장 위치
데이터는 어플리케이션이 실행되는 플랫폼의 로컬 레지스트리에 저장하며 플랫폼에 따라서 저장 방식 및 위치에 차이가있습니다.
HKCU는 HKEY_CURRENT_USER의 약어
CompanyName과 ProductName - 프로젝트 설정(Project Settings)에서 설정한 Company Name, Product Name
package name - 패키지 이름(com.Company Name.Product Name)
에디터 플레이 모드(In-Editor Play mode, 윈도우)
HKCU\Software\Unity\UnityEditor\[CompanyName]\[ProductName]
윈도우(Windows)
HKCU\Software\[CompanyName]\[ProductName]
안드로이드(Android)
/data/data/[package name]/shared_prefs/[package name].xml.
안드로이드의 경우 PlayerPrefs 데이터에 접근 또는 수정하기 위해 SharedPreferences API(또는 SharedPreferences.Editor API )를 사용하며 장치에 저장된 데이터에 일반적인 방법으로 접근이 불가능합니다(보안이 설정되어 루팅이 필요)
기타 플랫폼의 저장 위치
https://docs.unity3d.com/ScriptReference/PlayerPrefs.html
'유니티게임개발 > 기초공부' 카테고리의 다른 글
유니티에서 코루틴 yield return new WaitUntil 사용하기 (0) | 2021.07.05 |
---|---|
유니티 - 코루틴에서 yield return null 사용하기 (0) | 2021.07.05 |
유니티 에셋 curvy API와 유용한 함수 및 프로퍼티 (0) | 2021.07.05 |
유니티 URP에서 포스트프로세싱 사용하기(post processing) (0) | 2021.07.04 |
유니티 에셋 curvy - 스플라인 연결하기(connection) (0) | 2021.07.04 |