본문 바로가기
Development/Unity

JSON 직렬화로 데이터 저장, 불러오기2

by 식냥 2024. 7. 10.
728x90

2024.06.20 - [Coding/Unity] - [내일배움캠프 46일차 TIL] JSON 직렬화로 데이터 저장, 불러오기

 

[내일배움캠프 46일차 TIL] JSON 직렬화로 데이터 저장, 불러오기

[ 플레이어 데이터 ]데이터가 저장되어 있는 변수를 바로 사용하는 것이 아니라, 직렬화하려는 데이터들만 따로 별도의 class나 struct로 만든다. public class Character : MonoBehaviour{ public UserData data; priv

siknyang.tistory.com

 

JSON을 처음 배웠을 때 코드를 따라하는 데 급급해서 내용 숙지가 제대로 안 됐었던 부분이 많았다. 이번에 최종 프로젝트에서 다시 JSON을 사용했고, 보다 깔끔하게 코드를 작성하고 이해가 가능해서 다시 한 번 정리해 보았다.

 

 

 

public class DataManager : Singleton<DataManager>
{
    string savePath;

    protected override void Awake()
    {
        base.Awake();

        // Application.persistentDataPath: 사용하고 있는 기기의 운영 체제에 따른 적정 저장 경로를 자동으로 찾아줌
        savePath = Application.persistentDataPath;
    }

    public void SaveData<T>(T data)     // 제네릭 타입의 데이터 저장
    {
        File.WriteAllText(savePath + $"/{typeof(T).ToString()}.txt", JsonUtility.ToJson(data));     // JSON으로 직렬화하여 타입 명으로 파일 저장
        Debug.Log("저장 완료: " + savePath + $"/{typeof(T).ToString()}.txt");
    }

    public T LoadData<T>()    // 제네릭 타입의 데이터 불러오기
    {
        if (!File.Exists(savePath + $"/{typeof(T).ToString()}.txt"))
            return JsonUtility.FromJson<T>(null);

        string jsonData = File.ReadAllText(savePath + $"/{typeof(T).ToString()}.txt");
        Debug.Log("불러오기 완료: " + savePath + $"/{typeof(T).ToString()}.txt");
        return JsonUtility.FromJson<T>(jsonData);
    }
}

 

 

728x90
반응형