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
Libérer: 2025-01-04 06:05:39
original
1024 Les gens l'ont consulté

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

Charger les données :

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

    ... // Use the loaded data
}
Copier après la connexion

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal