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 |