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
반응형
'Development > Unity' 카테고리의 다른 글
| [내일배움캠프 59일차 TIL] 수면 시스템 구현하기 (0) | 2024.07.09 |
|---|---|
| [내일배움캠프 55일차 TIL] 2D 하루 낮밤과 다음 날 구현하기 (0) | 2024.07.03 |
| [내일배움캠프 50일차 TIL] 오브젝트 풀 객체 초기화 (0) | 2024.06.26 |
| [내일배움캠프 48일차 TIL] 오브젝트 풀에서 큐의 동작 원리 (0) | 2024.06.24 |
| [내일배움캠프 46일차 TIL] JSON 직렬화로 데이터 저장, 불러오기 (0) | 2024.06.20 |