Unity의 저장/로드 시스템으로 직렬화 변경 처리
Unity 직렬화의 편리함에도 불구하고 직렬화된 클래스에 변수를 추가할 때 문제가 발생합니다. . 이 문제는 직렬화된 파일의 이전 버전을 로드할 때 새 변수가 존재하지 않기 때문에 역직렬화 오류로 나타납니다.
JSON을 중간 형식으로 활용
하려면 이 문제를 해결하려면 JSON(JavaScript Object Notation)을 중간 데이터 형식으로 활용할 수 있습니다. 저장하기 전에 직렬화된 클래스를 JSON으로 변환하고 로드 시 객체로 다시 변환함으로써 변수 누락으로 인한 역직렬화 오류를 방지할 수 있습니다.
클래스 구조 예
[Serializable] public class Save { public List<int> ID = new List<int>(); public List<int> Amounts = new List<int>(); public int extra = 0; public float highScore = 0; }
데이터 저장 JSON
void Save() { Save saveData = new Save(); saveData.extra = 99; saveData.highScore = 40; // Convert to JSON string jsonData = JsonUtility.ToJson(saveData); // Save JSON string PlayerPrefs.SetString("MySettings", jsonData); PlayerPrefs.Save(); }
JSON으로 데이터 로드
void Load() { // Load saved JSON string jsonData = PlayerPrefs.GetString("MySettings"); // Convert to Class Save loadedData = JsonUtility.FromJson<Save>(jsonData); // Display saved data Debug.Log("Extra: " + loadedData.extra); Debug.Log("High Score: " + loadedData.highScore); for (int i = 0; i < loadedData.ID.Count; i++) { Debug.Log("ID: " + loadedData.ID[i]); } for (int i = 0; i < loadedData.Amounts.Count; i++) { Debug.Log("Amounts: " + loadedData.Amounts[i]); } }
JsonUtility.FromJson과의 차이점 JsonUtility.FromJsonOverwrite
위 내용은 JSON을 사용하여 Unity의 저장/로드 시스템에서 직렬화 변경 사항을 어떻게 처리할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!