Unity序列化一些內容

2021-09-24 22:51:57 字數 1384 閱讀 7340

序列化又稱序列化,是.net執行時環境用來支援使用者定義型別的流化的機制。其目的是以某種儲存形式使自定義物件持久化,或者將這種物件從乙個地方傳輸到另乙個地方。

簡單來說就是將物件儲存到檔案中。如unity的場景檔案和預製體預設就是以二進位制的檔案儲存在工程目錄下。

在unity中,在檢視面板中可以看到的,就是被成功序列化了的引數。與序列化相關的常用的關鍵字有serializefield,hideininspector,nonserialized,serializable並可以組合使用。

下面用一段**來舉例說明:

我們新建乙個test指令碼來驗證一下,輸入上述**後觀察檢視面板:

然後將掛在指令碼的預製體用sublime開啟觀察序列化部分: 

耶,成功了! 

注意:並非所有的公有變數都是可以被序列化的。其中const,static是靜態的,屬於類而非物件,無法序列化。鍊錶和字典在記憶體中的儲存是不連續的,也無法序列化。其中const,static,readonly的區別可參考文章:

簡單介紹兩種常用的c#序列化操作(二進位制方法和xml方法)

首先我們先定義乙個可被序列化的類democlass 

它包含兩個公有變數id和name,乙個含參的建構函式和乙個預設建構函式(二進位制不需要,xml必須), 乙個用於顯示的輸出函式。 

序列化:新建或開啟乙個二進位制檔案,通過二進位制格式器將物件demo寫入該檔案中。

反序列化:開啟待反序列化的二進位制檔案,通過二進位制格式器將檔案解析成物件demo,並輸出到控制台。

耶,成功了!

注意:二進位制方法可以序列化私有變數,不能序列化被[nonserialized ]修飾的變數且類需要被[serializable ]標識。

序列化與反序列化與二進位制方法十分類似。

耶,成功了!

注意:xml方法中類不需要[serializable]標識,不能序列化私有變數,[nonserialized]這個標識在該方法中無效。

區別:希望大家在日常開發中合理使用serializefield,不用濫用public。

本文**

序列化一些要點筆記

1.乙個類可序列化的前提 實現serializable介面 2.乙個屬性不想序列化的方式 增加transient關鍵字 3.serialversionuid 是表示乙個類的序列化標識,和乙個類的類名以及包路徑一起組成類在序列化時的唯一標識。4.當兩個jvm中存在serialversionuid 類名...

Unity 序列化和反序列化

1 序列化就是將物件儲存在檔案中,在檢視面板看到的就是成功序列化的內容 與序列化相關的常用的關鍵字有serializefield,hideininspector,nonserialized,serializable並可以組合使用。serializefield 表示變數可被序列化。眾所周知,公有變數可...

Unity 的序列化

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