Unity序列化深度限制七層的解決辦法

2021-09-26 01:49:58 字數 372 閱讀 7333

因為unity是基於序列化的系統,所以為了避免迴圈引用不跳出造成死迴圈,所以unity官方在所有迴圈引用是會有乙個七層的深度限制,滿足即跳出。例如

public

class

nodeasset

: scriptableobject

class

nodevalue

這種迴圈引用會導致nodevalue在讀到第七層的時候跳出,在編寫類似節點編輯器或者行為樹外掛程式的時候會造成在讀到第七個節點的時候丟失之後的資料;

我的解決辦法是塌陷無限遞迴的list為一維陣列,將所有的節點儲存到asset檔案的陣列中,以唯一的id進行引用和查詢,會損失一些效能但是可以達到無限遞迴的效果。

Unity 的序列化

經過 serialize 序列化 的 class 或 attribute 的值會被儲存成二進位制檔案,在 unity 中可序列化的 attribute 將在 inspector 顯示出來 class 與 public attribute 都是被視為可序列化的 private attribute 被視...

unity 類的序列化

概念 序列化 serialization 將物件的狀態資訊轉換為可以儲存或傳輸的形式的過程。在序列化期間,物件將其當前狀態寫入到臨時或永續性儲存區。以後,可以通過從儲存區中讀取或反序列化物件的狀態,重新建立該物件。實現例子 寫乙個myclass類,提供了可被序列化的屬性,如下 using unity...

二叉樹的按行層序遍歷及序列化和反序列化

序列化 如圖,按前序進行序列化可得到字串1 2 3 4 1 1 5 1 1 3 1 1 其中 表示乙個值的結束,1表示該節點為空。反序列化 序列化的逆操作。附 treenode premaketree treenode root,int value return root void preorder...