Maison > développement back-end > C++ > Comment gérer les changements de version lors de la mise à jour des données sérialisées dans Unity ?

Comment gérer les changements de version lors de la mise à jour des données sérialisées dans Unity ?

Mary-Kate Olsen
Libérer: 2025-01-03 18:13:44
original
791 Les gens l'ont consulté

How to Handle Version Changes When Updating Serialized Data in Unity?

Mise à jour des données sérialisées dans Unity : gestion des changements de version

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}");
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal