Unity では、データをシリアル化されたクラスとして保存するときに、クラスに追加の変数を追加すると、次のような場合に競合が発生する可能性があります。保存されたファイルの古いバージョンをロードしています。これを適切に処理するには、データを 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 }
以上がUnity でデータを安全に保存およびロードし、シリアル化可能なクラスへの変更を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。