ホームページ > バックエンド開発 > C++ > Unity でデータを安全に保存およびロードし、シリアル化可能なクラスへの変更を処理するにはどうすればよいですか?

Unity でデータを安全に保存およびロードし、シリアル化可能なクラスへの変更を処理するにはどうすればよいですか?

DDD
リリース: 2025-01-04 06:05:39
オリジナル
993 人が閲覧しました

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

Unity でのデータの保存: シリアル化可能なクラスの変更の処理

Unity では、データをシリアル化されたクラスとして保存するときに、クラスに追加の変数を追加すると、次のような場合に競合が発生する可能性があります。保存されたファイルの古いバージョンをロードしています。これを適切に処理するには、データを JSON 形式に変換することを検討してください。

保存/読み込みの柔軟性を高めるために JSON に変換します

JsonUtility.ToJson を使用して、シリアル化されたクラスを JSON 文字列に変換します。 PlayerPrefs.SetString またはその他の推奨メソッドを使用して、この文字列を保存します。データをロードするときに、JsonUtility.FromJson を使用して JSON 文字列をクラスに変換します。

データ変換のコード例

データの保存:

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();
}
ログイン後にコピー

ロードData:

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

    ... // Use the loaded data
}
ログイン後にコピー

追加の考慮事項

  • JsonUtility.FromJsonOverwrite: このメソッドを使用すると、新しいインスタンスを作成せずにインスタンス内の既存のデータを上書きできます。これは、配列やリストなどのデータ構造を更新する場合に役立ちます。
  • メモリ割り当て: JSON への変換には、リストと文字列へのメモリ割り当てが含まれる場合があります。可能な場合は、既存のインスタンスを再利用することを検討してください。
  • データ互換性: クラスに変更を加えるときに、フォールバック値を提供するか、欠落している変数を適切に処理することによって、古いバージョンのデータを引き続きロードできることを確認します。

以上がUnity でデータを安全に保存およびロードし、シリアル化可能なクラスへの変更を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート