首頁 > 後端開發 > C++ > Unity更新序列化資料時如何處理版本變更?

Unity更新序列化資料時如何處理版本變更?

Mary-Kate Olsen
發布: 2025-01-03 18:13:44
原創
753 人瀏覽過

How to Handle Version Changes When Updating Serialized Data in Unity?

在Unity 中更新序列化資料:處理版本變更

在Unity 中序列化資料時,如果稍後修改序列化類別的結構,可能會遇到問題。新增變數可能會導致反序列化錯誤。

要解決此問題,一種方法是利用 JSON 序列化和 PlayerPrefs 將資料儲存和檢索為 JSON 字串。以下是實作它的方法:

[Serializable]
public class Save
{
    public List<int> ID;
    public List<int> Amounts;
    public int extra;
}

// Save Data
void Save()
{
    Save saveData = new Save();
    saveData.ID = new List<int>();
    saveData.Amounts = new List<int>();
    saveData.extra = 99;

    // Convert to JSON
    string jsonData = JsonUtility.ToJson(saveData);

    // Save JSON string
    PlayerPrefs.SetString("MySettings", jsonData);
    PlayerPrefs.Save();
}

// Load Data
void Load()
{
    // Load saved JSON
    string jsonData = PlayerPrefs.GetString("MySettings");

    // Convert JSON back to class
    Save loadedData = JsonUtility.FromJson<Save>(jsonData);

    // Display saved data
    Debug.Log($"Extra: {loadedData.extra}");
}
登入後複製

在此實作中,我們使用 JsonUtility.ToJson 將 Save 物件轉換為 JSON 字串。然後該字串儲存在 PlayerPrefs 中。載入資料時,我們使用 JsonUtility.FromJson 將 JSON 字串反序列化回 Save 物件。

這種方法確保即使稍後向 Save 類別添加新變量,仍然可以加載現有的保存數據,而無需錯誤。反序列化過程將簡單地忽略新的、無法辨識的變數。

注意:

使用此技術時,重要的是要考慮不同版本的類別的潛在問題。例如,如果變更 Save 類別中變數的資料類型,則在載入使用舊版本類別儲存的資料時可能會導致相容性問題。

以上是Unity更新序列化資料時如何處理版本變更?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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