扩展编辑器的几个回调函数

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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章