유니티

[유니티] 저장

redcaramel 2026. 5. 13. 23:21

# PlayerPrefs

PlayerPrefs는 Unity에서 제공하는 (primitive)변수 저장 기능이다.

 

PlayerPrefs에서 데이터는 [key, value]형태로 저장되며, key는 string형태의 문자열이다.

 

(SaveManager.cs)

using UnityEngine;

public class SaveManager : MonoBehaviour
{
    private string saveKey = "StageIndex";
    [SerializeField] private StageData stageData;
    private void Awake()
    {
        DontDestroyOnLoad(this);
    }
    private void OnApptionQuit()
    {
        SaveStageIndex();
    }
    private void SaveStageIndex()
    {
        PlayerPrefs.SetInt(saveKey, stageData.currentStage);
        PlayerPrefs.Save();
    }
    public void LoadStageIndex()
    {
        stageData.currentStage = PlayerPrefs.GetInt(saveKey, stageData.currentStage);
    }
}

일반적으로 모든 게임 전반에 작동하는 오브젝트이므로 DontDestroyOnLoad를 붙여준다.

 

게임을 종료할 때 save메소드를 불러오고 타 class에서 load 메소드를 호출하면 그대로 값을 불러와 저장한다.

 

단, DontDestroyOnLoad를 사용하면 씬을 불러올 때마다 계속 중복되어 등장하므로 다음 방식으로 중복을 처리한다.

private static SaveManager instance;
    [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)]
    private void Awake()
    {
        if(instance == null)
        {
            instance = this;
            DontDestroyOnLoad(this);
        }
        else Destroy(gameObject);
       
    }

 

(Entry Play Mode를 사용하고 있으니 static 초기화용 attribute 부착)

'유니티' 카테고리의 다른 글

[유니티] UI 팝업 구현  (0) 2026.05.13
[유니티] UI 리스트 구현  (0) 2026.05.13
[유니티] Canvas and UI  (0) 2026.05.13
[유니티] Audio Source  (0) 2026.05.12
[유니티] Prefabs  (0) 2026.05.12