오늘은 어제 특강때 공부했던 JSON 유틸리티를 이해해보는 시간을 가져봐야할것같다..
실제로 예제를 통해 데이터를 저장 및 불러오기를 해볼거다.
우선 데이터 구조를 만들어보자
1. 데이터 구조 만들기
[System.Serializable]
public class PlayerData
{
public string playerName;
public int level;
}
[System.Serializable]을 작성하여 클래스가 JSON 형태로 변환될 수 있게 만들어줍니다.
그리고, 클래스에 저장하고자 하는 모든 변수를 정의해줍니다.
2. 데이터 저장 및 불러오기
using System.IO; // 네임스페이스 추가
using UnityEngine;
public class SaveLoadManager : MonoBehaviour
{
private string saveFilePath;
void Start()
{
// 파일저장경로지정 Application.persistentDataPath 사용시, 플랫폼에 맞는 적절한 위치에 저장
saveFilePath = Path.Combine(Application.persistentDataPath, "playerData.json");
}
public void SaveData(PlayerData data)
{
// PlayerData 객체를 JSON 형태로 변환
string json = JsonUtility.ToJson(data, true);
// 파일로 저장
File.WriteAllText(saveFilePath, json);
Debug.Log("저장이 완료되었습니다. 저장 위치 : " + saveFilePath);
}
public PlayerData LoadData()
{
// 저장된 파일이 있는지 확인
if (File.Exists(saveFilePath))
{
// 있다면 파일의 내용을 읽어오고
string json = File.ReadAllText(saveFilePath);
// 해당 내용은 PlayerData객체로 역직렬화 합니다.
PlayerData data = JsonUtility.FromJson<PlayerData>(json);
Debug.Log("데이터 불러오기 성공: " + data.playerName + ", Level: " + data.level);
return data;
}
// 저장된 파일이 없으면
else
{
Debug.LogWarning("저장된 파일이 없음.");
return null;
}
}
}
3. 사용하기
public class GameManager : MonoBehaviour
{
private SaveLoadManager saveLoadManager;
private PlayerData playerData;
void Start()
{
// 초기화
saveLoadManager = GetComponent<SaveLoadManager>();
// 플레이어 데이터를 생성하고
playerData = new PlayerData
{
playerName = "PlayerOne",
level = 1,
};
// 데이터 저장 및 불러오기
saveLoadManager.SaveData(playerData);
PlayerData loadedData = saveLoadManager.LoadData();
if (loadedData != null)
{
Debug.Log("불러온 데이터: " + loadedData.playerName);
}
}
}
'[UNITY],[C#] > TIL : UNITY' 카테고리의 다른 글
재미있는 퍼즐 로직 만들기 (0) | 2024.11.07 |
---|---|
[Unity] JSON유틸리티를 이용한 저장 및 불러오기 시스템 (0) | 2024.11.06 |
[Unity] Mathf 함수 정리하기 (0) | 2024.11.04 |
[디자인패턴] 명령패턴 (0) | 2024.11.01 |
[C#]딕셔너리를 알아보자 (0) | 2024.10.31 |