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事件(不理) |

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