EditorWindow 类

若如初见. 提交于 2019-12-03 13:47:54

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

titleContent


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以及其子类都会有的消息函数。。。

消息函数 说明
Awake 在打开新窗口时调用。
OnDestroy 关闭窗口时调用
OnFocus 窗口获得键盘焦点时调用
OnLostFocus 当窗口失去键盘焦点时调用。
OnGUI 在这里绘制窗口的内容
onHierarchyChange 有物体在hierarchy窗口中发生改变时调用
OnInspectorUpdate Inspector更新,10帧每秒,意思难道是Inspector更新一次所有窗口都会调用一次这个函数
OnProjectChange Project发生变化,就会调用
OnSelectionChange 选择的东西发生改变就会调用
Update 在所有可见窗口上每秒调用多次
继承的消息函数
Awake
OnDisable
OnEnable
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!