Skip to content

develop SaveLoad

pianop edited this page Mar 11, 2023 · 17 revisions

유저 게임 데이터의 저장과 불러오기를 관리

Json 간략 설명

Json은"dataName": value 형태로 이루어져있고 문자열은 ""으로 감싸주어야합니다.
Json가 지원하는 자료형으로는 number(int, float), string, bool, object, array, null 등이 있습니다.

TODO:

목차

DefaultUserData.json

역할: 게임 첫 시작 혹은 데이터 리셋 시 불러올 기본 게임 데이터

image
Resources/GameData/DefaultUserData.json 파일

public class UserData
{
    public int Gold;
    public int[] Options;
    public int[] PowerUps;
    public bool[] Achievements;
    public bool[] Collection;
    public bool[] UnlockStages;
}

Json에서 사용한 변수의 이름과 같이 이름들을 설정해주어야 뒤에 나올 JsonUtility.FromJson(...)으로 파싱이 가능

UserDataManager

역할: 유저의 게임 데이터에 대해 저장, 리셋, 불러오기, 불러온 데이터를 UserInfo클래스의 UserDataSet 변수에 파싱

Awake()에서 싱글톤 패턴 적용, DontDestroyOnLoad적용 , SavePath = Application.persistentDataPath + "/";으로 할당.
Start()에서 저장 파일이 있는지 확인, 없으면 위의 DefaultUserData를 불러와 새로 저장 파일 생성(DataReset), 있다면 기존 파일 불러오기

public void SaveData()
{
    string data = JsonUtility.ToJson(UserInfo.instance.UserDataSet);
    File.WriteAllText(SavePath + "UserSaveData.json", data);
}

public void LoadData()
{
    string data = File.ReadAllText(SavePath + "UserSaveData");
    UserInfo.instance.UserDataSet = JsonUtility.FromJson<UserData>(data);
}

public void DataReset()
{
    TextAsset textData = Resources.Load("GameData/DefaultUserData") as TextAsset;
    UserInfo.instance.UserDataSet = JsonUtility.FromJson<UserData>(textData.text);
    SaveData();
}

여기서 UserInfo.instance.UserDataSet은 위의 UserData타입임

Clone this wiki locally