Lors de la sérialisation des données dans Unity, il est possible de rencontrer des problèmes si vous modifiez ultérieurement la structure de la classe sérialisée. L'ajout de nouvelles variables peut entraîner des erreurs de désérialisation.
Pour résoudre ce problème, une approche consiste à utiliser la sérialisation JSON et PlayerPrefs pour stocker et récupérer des données sous forme de chaînes JSON. Voici comment l'implémenter :
[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}"); }
Dans cette implémentation, nous convertissons l'objet Save en une chaîne JSON à l'aide de JsonUtility.ToJson. Cette chaîne est ensuite stockée dans PlayerPrefs. Lors du chargement des données, nous désérialisons la chaîne JSON dans un objet Save à l'aide de JsonUtility.FromJson.
Cette approche garantit que même si vous ajoutez ultérieurement de nouvelles variables à la classe Save, les données enregistrées existantes peuvent toujours être chargées sans erreurs. Le processus de désérialisation ignorera simplement les nouvelles variables non reconnues.
Remarque :
Lors de l'utilisation de cette technique, il est important de prendre en compte les problèmes potentiels avec différentes versions de la classe. Par exemple, si vous modifiez le type de données d'une variable dans la classe Save, cela peut entraîner des problèmes de compatibilité lors du chargement de données enregistrées avec une ancienne version de la classe.
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!