學習 Unity 自製編輯器需要知道的三個管道 (Custom editor programming in Unity)
Unity 現在算是台灣業界常用的遊戲引擎之一,其功能不僅協助開發人員快速開發遊戲外,還提供讓開發人員自訂專案所需要的編輯器 (Editor)。
一位資深的程式設計師不僅得學習如何使用 Unity,撰寫架在 Unity 上的專案程式碼,甚至還需要學習如何開發 Unity 編輯器,以利其他開發者編輯遊戲(例如關卡設計)。分享自學編輯器的經驗以及心得。
網路教學資源
Unity Manual 已經有提供自定義 Editor 的說明, 隨著版本的更新會持續更新,算是一個很不錯的起手。
以往製作編輯器經驗是先根據需求,先上網搜尋看看有沒有人製作過(用英文關鍵字),從中學習其製作方法以及使用到的 Unity API,從 API 再去看上述的 Unity Manual 文件以及教學。
看別人寫的編輯器
若專案有使用到 Asset Store上的資源 (e.g. Plugins),有些 Plugins 通常會撰寫其專屬編輯器,通常這些編輯器程式碼都是可以直接開啟查看,是一個良好的學習管道。
或者從其他非官方教學所寫的編輯器與教學中研究,當初從 Catlikes Coding 的 Star 教學中,學習到如何開始使用 SerializedObject 來製作編輯器。
學習 Unity 內建的編輯器
反編譯工具 ILSpy,雖然還是看不見更底層呼叫 Library 的實作,但用來看 Unity 編輯器實作已經足夠了。
ILSpy 直接開啟 UnityEditor.dll (Windows),從中探索 Unity 編輯器的實作 (例如 TransformInspector),從中了解是呼叫那些 APIs,模仿照抄嘗試刻出自己的編輯器吧。
學習關鍵
-
看過教學務必自己寫出,多練習寫幾次,燒進肌肉記憶。僅僅只是看,是學會不會的。
-
Serialized Object, Serialized Field, PropertyField 這幾個了解清楚,自製 Editor 會很輕鬆
-
沒有需求動機要自製編輯器,不需要勉強自己去學習,不然只是徒增痛苦而已
-
反璞歸真,編輯器越簡單越好,最好是不用製作 EditorWindow 則不用,也不用寫 Inspector 相關的程式碼,甚至能不寫就不寫編輯器……(不歸路啊)
沒有留言: