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 |