[英]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.