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타입임

UserInfo

  • 역할: 진행중인 게임 데이터(골드, 해금, 업적, 강화 현황 등)을 변수로 가지 해당 정보들의 업데이트와 무기, 악세서리, 캐릭터, 스테이지 등의 해금 유무를 알수 있게 하는 역할을 담당

Clone this wiki locally