Unity/구현

데이터를 쉽게 저장하는 법 (Unity)

QuickClid 2025. 5. 10. 21:10
using UnityEngine;
using System.IO;

public class DataManager : MonoBehaviour
{
    public static GameObject data_manager;
    public Data data;

    private void Awake()
    {
        if (data_manager == null)
        {
            data_manager = gameObject;
            DontDestroyOnLoad(gameObject);
        }
        else
        {
            Destroy(gameObject);
        }
    }

    private void Start()
    {
        data = new Data();
        LoadFromJson();
    }

    private void OnApplicationQuit()
    {
        SaveToJson();
    }

    public void SaveToJson()
    {
        string filePath = Application.persistentDataPath + "/InGameData.json";
        File.WriteAllText(filePath, JsonUtility.ToJson(data));
    }

    public void LoadFromJson()
    {
        string filePath = Application.persistentDataPath + "/InGameData.json";
        if (File.Exists(filePath) == false)
        {
            ResetData();
            return;
        }
        data = JsonUtility.FromJson<Data>(File.ReadAllText(filePath));
    }

    public void ResetData()
    {
        for (int i = 0; i < 45; i++) data.cleared_levels[i] = false;
    }

    public void UpdateClearedLevel(int cleared_level_index)
    {
        data.cleared_levels[cleared_level_index] = true;
    }
}

[System.Serializable]
public class Data
{
    public bool[] cleared_levels = new bool[45];
}