EditorWindow 类

EditorWindow类,继承 ScriptableObject,用于创建一个编辑器窗口,通常用 MenuItem 打开编辑器窗口


1、Static Properties

静态属性 说明
focusedWindow (没啥用) 当前具有键盘焦点的EditorWindow实例(可以为null)(只读)
mouseOverWindow (没啥用) 当前在鼠标光标下的EditorWindow实例(可以为null)(只读)
public static EditorWindow focusedWindow; 
public static EditorWindow mouseOverWindow; 

2、Properties

属性 说明
autoRepaintOnSceneChange bool类型,当场景发生变化时,窗口是否自动重新绘制
maximized bool类型,可读可写,可使编辑器窗口最大化。注意当窗口undocked的时候设置该值没有效果
maxSize / minSize Vector2类型,如果最大最小都一样的话就可以限定窗口为不可缩放
position Rect类型,x y width height….,坐标的话是屏幕空间,左上角(0,0)
titleContent GUIContent类型,可以给编辑器指定icon、text、tooltip,如果使用icon,最好是在OnEnable(而不是构造函数中)来设置,另外可以直接在GetWindow的时候指定编辑器窗口名称
wantsMouseEnterLeaveWindow 略 bool 检查MouseEnterWindow和MouseLeaveWindow事件是否在此编辑器窗口的GUI中接收(不理)
wantsMouseMove(略) bool 检查在这个编辑器窗口的GUI中是否接收了MouseMove事件(不理)

EditorWindow 类_第1张图片


3、public methods

公共方法 说明
BeginWindows 用于开始绘制子窗口
EndWindows 用于结束绘制子窗口
Close 用于关闭这个编辑器窗口
Focus 调用这个函数的窗口实例获取键盘焦点
ShowNotification 显示一个信息,注意该函数参数为 GUIContent
RemoveNotification notification信息会自动fade,而这个函数可以立刻移除notification
Repaint 使窗口重绘(也没具体咋说,例子给的是在 OnInspectorUpdate 中调用 Repaint,那么效果是自定义编辑器重绘?没有这个的话也没啥影响。。。)
SendEvent 将事件发送到窗口
============ (以下几个貌似没什么大区别,不用理,不调用也没啥事。。。至于是不是浮动窗口,主要看 GetWindow 函数的 utility 参数)
Show 显示窗口
ShowAsDropDown(Rect , Vector2) 下拉行为和样式(无边框,差评)
ShowAuxWindow 在辅助窗口中显示编辑器窗口。
ShowPopup 使用弹出式框架显示编辑器窗口。
ShowUtility 显示为浮动实用程序窗口(然而并没什么效果)

4、static methods

静态方法 说明
FocusWindowIfItsOpen(Type) 如果窗口打开,那么就会聚焦在这个窗口上
GetWindow 获取窗口实例
GetWindowWithRect 获取窗口实例,顺便指定了Rect
//最主要留意一点 utility 如果设为true,那么会是一个 带边框的 windows 浮动窗口类型

public static EditorWindow GetWindow(Type t, bool utility = false, string title = null, bool focus = true); 

public static T GetWindow();
public static T GetWindow(bool utility);
public static T GetWindow(bool utility, string title);
public static T GetWindow(string title);
public static T GetWindow(string title, bool focus);
public static T GetWindow(bool utility, string title, bool focus); 

//另外一点,desiredDockNextTo 是窗口将试图停靠的EditorWindow数组。

public static T GetWindow(params Type[] desiredDockNextTo);
public static T GetWindow(string title, params Type[] desiredDockNextTo);
public static T GetWindow(string title, bool focus, params Type[] desiredDockNextTo); 

5、Messages

EditorWindow 类_第2张图片

注意这些是消息函数,是所有EditorWindow以及其子类都会有的消息函数。。。

消息函数 说明
Awake 在打开新窗口时调用。
OnDestroy 关闭窗口时调用
OnFocus 窗口获得键盘焦点时调用
OnLostFocus 当窗口失去键盘焦点时调用。
OnGUI 在这里绘制窗口的内容
onHierarchyChange 有物体在hierarchy窗口中发生改变时调用
OnInspectorUpdate Inspector更新,10帧每秒,意思难道是Inspector更新一次所有窗口都会调用一次这个函数
OnProjectChange Project发生变化,就会调用
OnSelectionChange 选择的东西发生改变就会调用
Update 在所有可见窗口上每秒调用多次
继承的消息函数
Awake
OnDisable
OnEnable

你可能感兴趣的:(扩展编辑器)