게임 개발 로그

PlayerPrefs를 이용해서 Save&Load 기능 구현하기 본문

유니티

PlayerPrefs를 이용해서 Save&Load 기능 구현하기

03:00am 2024. 12. 3. 10:21

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();
}