簡體   English   中英

序列化 ScriptableObject 參考 (InstanceID)

[英]Serializing ScriptableObject Reference (InstanceID)

假設我有一個 PlayerData ScriptableObject 包含對 AvatarData ScriptableObject 的引用,如下所示:

public class PlayerData : ScriptableObject
{
    public AvatarData avatar;
}

在游戲過程中,玩家可以將頭像更改為另一個。 所有 AvatarData 對象都保存在 .asset 文件中。 我想保存對當前選擇的 AvatarData 實例的引用並將其保存在 json/binary 文件中以供加載。

對於在 memory 中創建的對象,InstanceID 將更改每個游戲 session。 在 .asset 文件中序列化的對象實例呢? 由於實例已保存到文件中,我們可以依賴它/確保 InstanceID 不會更改嗎? JsonUtility.ToJson將為每個 object 生成帶有 InstanceID 的 json 但我需要確定當我調用JsonUtility.FromJsonOverwrite時我會得到相同的 object 我知道它不適用於在 memory 中創建的對象,但我認為它應該適用於保存為資產文件的實例。 恐怕每次構建應用程序時 InstanceID 都可能會發生變化。

這個事情誰有經驗? 創建自己的 UUID/Hashtable 來引用 Unity3D 中的對象會更好嗎?

我發現的大多數答案都建議使用 UnityEditor 命名空間,但它不能在構建中使用。

我發現這篇關於這個問題的帖子。 似乎我們不能在我們的保存系統中依賴 InstanceID,這是通往 go 的方法:

創建另一個 ScriptableObject 資產,其中包含對您的 ScriptableObject 資產的引用列表。 在您的保存數據中,記錄列表索引。 您可以實現ISerializationCallbackReceiver並在回調中獲取/設置索引。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM