天天看點

unity menuitem_Unity編輯器拓展基礎知識總結

unity menuitem_Unity編輯器拓展基礎知識總結

前言

從事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
           

儲存資源時,保險起見應當進行

  1. EditorUtility.SetDirty
  2. AssetDatabase.SaveAssets
  3. AssetDatabase.Refresh

TreeView

Unity Tree View官方文檔

unity menuitem_Unity編輯器拓展基礎知識總結

Unity 折疊樹

unity menuitem_Unity編輯器拓展基礎知識總結

https://blog.csdn.net/e295166319/article/details/52370575

這個特性其實EditorGUILayout.BeginFoldoutHeaderGroup也可與之對位

AdvancedDropdown

Unity AdvancedDropdown官方文檔

unity menuitem_Unity編輯器拓展基礎知識總結

其他資源

Unity Editor中所有圖示,包含所有Unity Editor中圖示,友善使用

Unity開源的CSharp部分,可在其中找到自己想要實作的Editor樣式源碼

Unity編輯器拓展手冊,超全,日文版,但是内容十分詳盡

總結

Unity編輯器拓展知識點十分瑣碎,是一個不斷積累的過程,共勉。