Unity에서 데이터를 직렬화할 때 나중에 직렬화된 클래스의 구조를 수정하면 문제가 발생할 수 있습니다. 새 변수를 추가하면 역직렬화 오류가 발생할 수 있습니다.
이 문제를 해결하기 위한 한 가지 접근 방식은 JSON 직렬화 및 PlayerPrefs를 활용하여 데이터를 JSON 문자열로 저장하고 검색하는 것입니다. 구현 방법은 다음과 같습니다.
[Serializable] public class Save { public List<int> ID; public List<int> Amounts; public int extra; } // Save Data void Save() { Save saveData = new Save(); saveData.ID = new List<int>(); saveData.Amounts = new List<int>(); saveData.extra = 99; // Convert to JSON string jsonData = JsonUtility.ToJson(saveData); // Save JSON string PlayerPrefs.SetString("MySettings", jsonData); PlayerPrefs.Save(); } // Load Data void Load() { // Load saved JSON string jsonData = PlayerPrefs.GetString("MySettings"); // Convert JSON back to class Save loadedData = JsonUtility.FromJson<Save>(jsonData); // Display saved data Debug.Log($"Extra: {loadedData.extra}"); }
이 구현에서는 JsonUtility.ToJson을 사용하여 Save 개체를 JSON 문자열로 변환합니다. 이 문자열은 PlayerPrefs에 저장됩니다. 데이터를 로드할 때 JsonUtility.FromJson을 사용하여 JSON 문자열을 다시 Save 개체로 역직렬화합니다.
이 접근 방식을 사용하면 나중에 Save 클래스에 새 변수를 추가하더라도 기존에 저장된 데이터를 계속 로드할 수 있습니다. 오류. 역직렬화 프로세스에서는 인식할 수 없는 새 변수를 무시합니다.
참고:
이 기술을 사용할 때는 다양한 버전의 클래스에서 발생할 수 있는 문제를 고려하는 것이 중요합니다. 예를 들어 Save 클래스에서 변수의 데이터 유형을 변경하면 이전 버전의 클래스로 저장된 데이터를 로드할 때 호환성 문제가 발생할 수 있습니다.
위 내용은 Unity에서 직렬화된 데이터를 업데이트할 때 버전 변경을 어떻게 처리합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!