擴展編輯器的幾個回調函數

Editor 類(Inspector、Preview、Scene)

public class Editor : ScriptableObject{ }

注意繼承 Editor的類,一般在類聲明之前還有一句 [CustomEditor(typeof(xx))]
然而 繼承 EditorWindow的類,一般沒有聲明,但是要打開窗口 [MenuItem(xxx)]

Editor 類 (繼承這個可以爲物體、組件創建自定義的Inspector),注意分兩種:
1、消息函數 OnSceneGUI
2、公有函數,可以public override void xxx(){ }

可以在Scene視圖中繪製東西,可以在Inspector中繪製基本的、以及預覽窗口,在預覽窗口中又可以加入其他信息

消息函數
OnSceneGUI()
用於重寫的公有方法
DrawDefaultInspector
DrawHeader
DrawPreview
GetInfoString
GetPreviewTitle
HasPreviewGUI
OnInspectorGUI
OnInteractivePreviewGUI
OnPreviewGUI
OnPreviewSettings
RenderStaticPreview
Repaint
RequiresConstantRepaint
UseDefaultMargins

繼承來的消息函數還有 :Awake、OnEnable、OnDisable、OnDestroy

EditorWindow 類(自定義編輯器窗口)

public class EditorWindow : ScriptableObject { }
EditorWindow 類 (繼承ScriptableObject)
Awake() 在打開新窗口時調用。
OnDestroy() 關閉窗口時調用
OnFocus() 窗口獲得鍵盤焦點時調用
OnLostFocus() 當窗口失去鍵盤焦點時調用。
OnGUI() 在這裏繪製窗口的內容
OnHierachyChange() 有物體在hierarchy窗口中發生改變時調用
OnInspectorUpdate() Inspector更新,10幀每秒,意思難道是Inspector更新一次所有窗口都會調用一次這個函數
OnProjectChange() Project發生變化,就會調用
OnSelectionChange() 選擇的東西發生改變就會調用
Update() 在所有可見的EditorWindow窗口上每秒調用多次

繼承來的消息函數還有 Awake、OnEnable、OnDisable

MonoBehaviour 類(Scene)

public class MonoBehaviour : Behaviour { }

這裏只列出用於擴展編輯器的回調函數

MonoBehaviour類
OnDrawGizmos
OnDrawGizmosSelected

ObjectPreview 類 (Preview)

繼承ObjectPreview類 (注意 [CustomPreview(typeof(xx))])
HasPreviewGUI()
OnPreviewGUI()

3種在Scene視圖中繪製工具的方法 ——

Gizmos類 (UnityEngine命名空間) ——
MonoBehaviour子類的 OnDrawGizmos、OnDrawGizmosSelected

Handles類(UnityEditor命名空間) ——
Editor子類的 OnSceneGUI

[DrawGizmo(GizmoType.xxx)]
public static void FuctionName( Type t , GizmoType gizmoType){ … }

發佈了46 篇原創文章 · 獲贊 8 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章