Heim > Backend-Entwicklung > C++ > Wie kann ich Daten sicher in Unity speichern und laden und dabei Änderungen an meiner serialisierbaren Klasse verarbeiten?

Wie kann ich Daten sicher in Unity speichern und laden und dabei Änderungen an meiner serialisierbaren Klasse verarbeiten?

DDD
Freigeben: 2025-01-04 06:05:39
Original
1023 Leute haben es durchsucht

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

Speichern von Daten in Unity: Umgang mit Änderungen in der serialisierbaren Klasse

In Unity kann das Hinzufügen zusätzlicher Variablen zur Klasse beim Speichern von Daten als serialisierte Klasse zu Konflikten führen Laden älterer Versionen der gespeicherten Datei. Um dies reibungslos zu handhaben, sollten Sie die Konvertierung der Daten in das JSON-Format in Betracht ziehen.

Konvertieren in JSON für Flexibilität beim Speichern/Laden

Verwenden Sie JsonUtility.ToJson, um die serialisierte Klasse in eine JSON-Zeichenfolge zu konvertieren. Speichern Sie diese Zeichenfolge mit PlayerPrefs.SetString oder anderen bevorzugten Methoden. Verwenden Sie beim Laden der Daten JsonUtility.FromJson, um die JSON-Zeichenfolge zurück in die Klasse zu konvertieren.

Beispielcode für die Datenkonvertierung

Daten speichern:

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();
}
Nach dem Login kopieren

Laden Daten:

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

    ... // Use the loaded data
}
Nach dem Login kopieren

Zusätzliche Überlegungen

  • JsonUtility.FromJsonOverwrite: Diese Methode ermöglicht das Überschreiben vorhandener Daten in einer Instanz, ohne eine neue Instanz zu erstellen. Dies kann zum Aktualisieren von Datenstrukturen wie Arrays oder Listen nützlich sein.
  • Speicherzuweisung: Die Konvertierung in JSON kann eine Speicherzuweisung für Listen und Zeichenfolgen erfordern. Erwägen Sie nach Möglichkeit die Wiederverwendung vorhandener Instanzen.
  • Datenkompatibilität: Stellen Sie sicher, dass bei Änderungen an der Klasse ältere Versionen der Daten weiterhin geladen werden können, indem Sie Fallback-Werte bereitstellen oder fehlende Variablen ordnungsgemäß behandeln.

Das obige ist der detaillierte Inhalt vonWie kann ich Daten sicher in Unity speichern und laden und dabei Änderungen an meiner serialisierbaren Klasse verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage