前言
從事Unity編輯器拓展也有一段時間了,該記錄一下常見的知識點了,也友善自己日後查閱
結構
Unity編輯器拓展主要分為3大類
- UnityEngine.GUI:可用于編輯器和運作時,需要自行計算Rect
- UnityEditor.EditorGUI:隻可用于編輯器,需要自行計算Rect
- UnityEditor.EditorGUILayout:隻可用于編輯器,自動計算Rect
其中UnityEditor.EditorGUILayout基于UnityEditor.EditorGUI實作
常見類
Rect
這個類型在編輯器拓展中十分常見,官方解釋為
A 2D Rectangle defined by X and Y position, width and height.
一個由X,Y坐标,width,height寬高定義的2D矩形
其以左上角為坐标原點,X往右遞增,Y往下遞增
更加詳細介紹可參照:Unity Rect官方文檔
GUIContent
GUIContent定義了一個GUI Item内容,最完整的構造函數如下
//建構同時包含文本,圖檔和定義的tooltip的GUIContent。 當使用者将滑鼠懸停在其上方時,全局GUI.tooltip會被設定為這個tooltip
GUIStyle
一個GUIStyle定義了一個GUI Item的樣式,最完整的構造函數如下
public
但是我們最常用的還是string的隐式轉換
public
常用GUIStyle樣式可以從Unity常用GUIStyle收集檢視
常用編輯器拓展知識
菜單欄拓展
[MenuItem("TargetCatalogName")]
Inspector拓展
[CustomEditor(typeof(TargetClassName))]
輕按兩下資源回調
[UnityEditor.Callbacks.OnOpenAsset(TargetCallBackOrder)]
UnityEditor生命周期
UnityEditor
Undo/Redo
UnityEditor
ScriptableObject序列化相關
- 如果一個ScriptableObject(下面簡稱為SO)的HideFlag設定為HideInHierarchy,那麼LoadAllAssetRepresentationsAtPath會将其忽略
- 如果不将SO儲存為Asset,運作遊戲後将會被GC,進而丢失引用
資源管理相關
//添加子Asset
儲存資源時,保險起見應當進行
- EditorUtility.SetDirty
- AssetDatabase.SaveAssets
- AssetDatabase.Refresh
TreeView
Unity Tree View官方文檔
Unity 折疊樹
https://blog.csdn.net/e295166319/article/details/52370575
這個特性其實EditorGUILayout.BeginFoldoutHeaderGroup也可與之對位
AdvancedDropdown
Unity AdvancedDropdown官方文檔
其他資源
Unity Editor中所有圖示,包含所有Unity Editor中圖示,友善使用
Unity開源的CSharp部分,可在其中找到自己想要實作的Editor樣式源碼
Unity編輯器拓展手冊,超全,日文版,但是内容十分詳盡
總結
Unity編輯器拓展知識點十分瑣碎,是一個不斷積累的過程,共勉。