首頁 > 後端開發 > C++ > 如何在 Unity 中安全地保存和載入數據,處理可序列化類別的變更?

如何在 Unity 中安全地保存和載入數據,處理可序列化類別的變更?

DDD
發布: 2025-01-04 06:05:39
原創
1000 人瀏覽過

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:
  • JsonUtility.FromJsonOverwrite:
  • 此方法允許覆寫實例中的現有數據,而無需建立新實例。這對於更新數組或列表等資料結構非常有用。
  • 記憶體分配:
  • 轉換為 JSON 可能涉及清單和字串的記憶體分配。盡可能考慮重複使用現有實例。
  • 資料相容性:
確保在對類別進行更改時,仍然可以透過提供後備值或妥善處理缺失的變數來載入舊版本的資料。

以上是如何在 Unity 中安全地保存和載入數據,處理可序列化類別的變更?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板