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){ … }