Maison >développement back-end >C++ >Comment puis-je gérer les modifications de sérialisation dans le système de sauvegarde/chargement d'Unity à l'aide de JSON ?
Gestion des modifications de sérialisation avec le système de sauvegarde/chargement de Unity
Malgré la commodité de la sérialisation de Unity, elle pose un défi lors de l'ajout de variables aux classes sérialisées . Ce problème se manifeste par des erreurs de désérialisation lors du chargement d'une ancienne version d'un fichier sérialisé, car la nouvelle variable n'existe pas.
Utilisation de JSON comme format intermédiaire
Pour Pour résoudre ce problème, nous pouvons exploiter JSON (JavaScript Object Notation) comme format de données intermédiaire. En convertissant la classe sérialisée en JSON avant de l'enregistrer et de la revenir en objet lors du chargement, nous pouvons éviter les erreurs de désérialisation causées par des variables manquantes.
Exemple de structure de classe
[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; }
Enregistrement des données avec 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(); }
Chargement des données avec 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]); } }
Différence entre JsonUtility.FromJson et JsonUtility.FromJsonOverwrite
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!