게임 개발 로그
PlayerPrefs를 이용해서 Save&Load 기능 구현하기 본문
PlayerPrefs
유니티의 PlayerPrefs는 게임 세션 간에 플레이어 기본 설정을 저장하는 클래스다. 문자열, 부동 소수점 및 정수 값을 사용자의 플랫폼 레지스트리에 저장할 수 있다.
주의: Unity는 암호화 없이 로컬 레지스트리에 PlayerPrefs를 저장하기 때문에 민감한 데이터를 저장하면 안 된다.
레지스트리 위치
HKEY_CURRENT_USER/Software/Unity/UnityEditor/CompanyName/projectName
저장
PlayerPrefs.SetString/SetInt/SetFloat... 등을 이용해서 값을 저장할 수 있다.
// Save
if (Input.GetKeyDown(KeyCode.S))
{
string setID = "Inha2024";
PlayerPrefs.SetString("ID", setID);
PlayerPrefs.SetInt("Score", 33);
PlayerPrefs.SetFloat("Exp", 44.4f);
}
불러오기
PlayerPrefs.HasKey로 키가 있는지 확인하고 PlayerPrefs.GetInt/GetFloat/GetString 등을 이용해 값을 가져올 수 있다.
PlayerPrefs.Get~()의 두번째 매개변수에는 키가 없을 경우 저장할 값을 넣을 수 있다.
// Load
if (Input.GetKeyDown(KeyCode.A))
{
if (PlayerPrefs.HasKey("ID"))
string getID = PlayerPrefs.GetString("ID");
int getScore = PlayerPrefs.GetInt("Score", 0); // Score가 없으면 getScore에 0 저장
float getExp = PlayerPrefs.GetFloat("Exp", 0.0f); // getExp가 없으면 getExp에 0.0f 저장
string getID = PlayerPrefs.GetString("ID", "NONE");
}
키 삭제
PlayerPrefs.DeleteKey("string"): string에 해당하는 키만 삭제
PlayerPrefs.DeleteAll(): 키 모두 삭제
if (Input.GetKeyDown(KeyCode.F))
{
PlayerPrefs.DeleteKey("ID");
PlayerPrefs.DeleteKey("Score");
PlayerPrefs.DeleteKey("Exp");
PlayerPrefs.DeleteAll();
}