Maison >développement back-end >C++ >Comment puis-je enregistrer et charger des données en toute sécurité dans Unity, en gérant les modifications apportées à ma classe sérialisable ?

Comment puis-je enregistrer et charger des données en toute sécurité dans Unity, en gérant les modifications apportées à ma classe sérialisable ?

DDD
DDDoriginal
2025-01-04 06:05:391026parcourir

How Can I Safely Save and Load Data in Unity, Handling Changes to My Serializable Class?

Enregistrement des données dans Unity : gestion des modifications dans la classe sérialisable

Dans Unity, lors de l'enregistrement de données en tant que classe sérialisée, l'ajout de variables supplémentaires à la classe peut provoquer des conflits lorsque chargement des anciennes versions du fichier enregistré. Pour gérer cela avec élégance, envisagez de convertir les données au format JSON.

Convertir en JSON pour une flexibilité de sauvegarde/chargement

Utilisez JsonUtility.ToJson pour convertir la classe sérialisée en chaîne JSON. Enregistrez cette chaîne à l'aide de PlayerPrefs.SetString ou d'autres méthodes préférées. Lors du chargement des données, utilisez JsonUtility.FromJson pour reconvertir la chaîne JSON dans la classe.

Exemple de code pour la conversion des données

Enregistrer les données :

using UnityEngine;
using System;
using System.Collections.Generic;

[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;

    public string ToJson()
    {
        return JsonUtility.ToJson(this);
    }

    public static Save FromJson(string json)
    {
        return JsonUtility.FromJson<Save>(json);
    }
}

void Save()
{
    Save saveData = new Save();
    ... // Populate the data fields
    string jsonData = saveData.ToJson();
    PlayerPrefs.SetString("MySettings", jsonData);
    PlayerPrefs.Save();
}

Charger les données :

void Load()
{
    string jsonData = PlayerPrefs.GetString("MySettings");
    Save loadedData = Save.FromJson(jsonData);

    ... // Use the loaded data
}

Supplémentaires Considérations

  • JsonUtility.FromJsonOverwrite : Cette méthode permet d'écraser les données existantes dans une instance sans créer une nouvelle instance. Cela peut être utile pour mettre à jour des structures de données telles que des tableaux ou des listes.
  • Allocation de mémoire : La conversion en JSON peut impliquer une allocation de mémoire pour les listes et les chaînes. Envisagez de réutiliser les instances existantes lorsque cela est possible.
  • Compatibilité des données : Assurez-vous que lorsque vous apportez des modifications à la classe, les anciennes versions des données peuvent toujours être chargées en fournissant des valeurs de secours ou en gérant correctement les variables manquantes.

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!

Déclaration:
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