自定義Unity組件時如果不加以控制,會按照Unity默認的方式來排布顯示可序列化屬性。
如果我們向讓屬性顯示得更個性化壹些,可以自定義PropertyDrawer。
這個PropertyDrawer它可以指定Serializable類(可序列化類)或PropertyAttribute( 自定義屬性 ),這樣就有了兩種使用:
另註 :
組件為什麽能顯示在Inspector面板上?
因為組件都繼承自Monobehaviour,父類的initiate方法起到了序列化和反序列化的作用。這樣就能保存為MetaData,供下次使用。
Serializable類(可序列化類)在Unity中有什麽含義呢?
默認地,Unity只給自定義的公有變量、繼承自MonoBehaviour的類執行序列化,所以如果想讓壹個類序列化,那麽就要指定[Serializable]標簽。它將MetaData放入可以通過反射重新獲取並由Unity使用的類中。有了這個Unity知道它應該/可以序列化類。
Unity序列化的關鍵字是 Serializable 和 SerializeField,具體描述可以翻閱api。
假設我們在寫壹個組件需要把壹個引用字段裏的屬性都顯示出來供配置,那麽,根據上面的介紹我們要分兩步。
前文鏈接:自定義menuItem
下文:針對自定義特性創建PropertyDrawer
註:配套案例可在 EditorExtensionDemo 倉庫中查看。