關於 web service, unity, blogger 等軟體工程筆記

學習 Unity 自製編輯器需要知道的三個管道 (Custom editor programming in Unity)

Edit icon 沒有留言
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,模仿照抄嘗試刻出自己的編輯器吧。

ILSpy 查看 Unity 編輯器內部實作

ILSpy 查看 Unity 編輯器內部實作

學習關鍵

  • 看過教學務必自己寫出,多練習寫幾次,燒進肌肉記憶。僅僅只是看,是學會不會的。

  • Serialized Object, Serialized Field, PropertyField 這幾個了解清楚,自製 Editor 會很輕鬆

  • 沒有需求動機要自製編輯器,不需要勉強自己去學習,不然只是徒增痛苦而已

  • 反璞歸真,編輯器越簡單越好,最好是不用製作 EditorWindow 則不用,也不用寫 Inspector 相關的程式碼,甚至能不寫就不寫編輯器……(不歸路啊)

沒有留言: