Heim >Backend-Entwicklung >C++ >Wie kann ich Serialisierungsänderungen im Speicher-/Ladesystem von Unity mithilfe von JSON verarbeiten?
Umgang mit Serialisierungsänderungen mit dem Speicher-/Ladesystem von Unity
Trotz der Bequemlichkeit der Serialisierung von Unity stellt es eine Herausforderung dar, Variablen zu serialisierten Klassen hinzuzufügen . Dieses Problem manifestiert sich als Deserialisierungsfehler beim Laden einer älteren Version einer serialisierten Datei, da die neue Variable nicht vorhanden ist.
JSON als Zwischenformat verwenden
Zu Um dieses Problem zu lösen, können wir JSON (JavaScript Object Notation) als Zwischendatenformat nutzen. Indem wir die serialisierte Klasse vor dem Speichern in JSON und beim Laden wieder in ein Objekt konvertieren, können wir Deserialisierungsfehler vermeiden, die durch fehlende Variablen verursacht werden.
Beispielklassenstruktur
[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; }
Daten mit JSON speichern
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(); }
Daten laden mit 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]); } }
Unterschied zwischen JsonUtility.FromJson und JsonUtility.FromJsonOverwrite
Das obige ist der detaillierte Inhalt vonWie kann ich Serialisierungsänderungen im Speicher-/Ladesystem von Unity mithilfe von JSON verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!