예지의 테크 로그포스 (Yeji's Tech Log Force)

사용자의 게임 기록 저장&불러오기 - Json파일 저장 본문

[Unity] Projects & Study/Loop - Interactive Movie

사용자의 게임 기록 저장&불러오기 - Json파일 저장

Yeji Heo 2023. 3. 9. 15:11

1. 파일이 존재하지 않으면 JsonMake()함수로 만들기

 public void JsonMake()
    {
        SaveData saveData = new SaveData();

        saveData.isVisit[0] = true;
        for (int i = 1; i < 21; i++)
        {
            saveData.isVisit[i] = false;
        }
        for (int i = 0; i < 9; i++)
        {
            saveData.ending[i] = false;
        }
        GameManager.I.continueScene = "Scene1";
        saveData.continueScene = GameManager.I.continueScene;

        string json = JsonUtility.ToJson(saveData, true);
        File.WriteAllText(path, json);
    }

 

2. 존재하면 Load

 public void JsonLoad()
    {
        SaveData saveData = new SaveData();

        if (!File.Exists(path))
        {
            JsonMake();
        }
        else
        {
            string loadJson = File.ReadAllText(path);
            saveData = JsonUtility.FromJson<SaveData>(loadJson);

            if (saveData != null)
            {
                for (int i = 0; i < saveData.isVisit.Length; i++)
                {
                    GameManager.I.isVisit[i] = saveData.isVisit[i];
                }
                for (int i = 0; i < saveData.ending.Length; i++)
                {
                    GameManager.I.ending[i] = saveData.ending[i];
                }
                GameManager.I.continueScene = saveData.continueScene;

            }
        }
    }

 

3. 게임 도중 사용자가 뒤로가기버튼을 눌러 Main으로 돌아갈 때 JsonSave()호출해 저장


     public void JsonSave()
    {
        SaveData saveData = new SaveData();

        for (int i = 0; i < 21; i++)
        {
            saveData.isVisit[i] = GameManager.I.isVisit[i];
        }
        for (int i = 0; i < 9; i++)
        {
            saveData.ending[i] = GameManager.I.ending[i];
        }
        saveData.continueScene = GameManager.I.continueScene;

        string json = JsonUtility.ToJson(saveData, true);
        File.WriteAllText(path, json);
    }
Comments