从该类派生以创建自定义编辑器窗口。
使用此类创建编辑器窗口,这些窗口可以独立浮动或作为选项卡停靠,类似于 Unity 编辑器中的默认窗口。
可以使用 MenuItem 属性配置编辑器窗口,以便在 Unity 编辑器菜单中打开。
创建自定义编辑器窗口时,请遵循以下指南
下图显示了编辑器窗口的执行顺序
有关如何创建对用户输入做出反应的编辑器窗口的示例,请参阅 使用 C# 脚本创建自定义编辑器窗口。
using UnityEditor; using UnityEngine; using UnityEngine.UIElements; public class MyEditorWindow : EditorWindow { [MenuItem("Examples/My Editor Window")] public static void ShowExample() { MyEditorWindow wnd = GetWindow<MyEditorWindow>(); wnd.titleContent = new GUIContent("MyEditorWindow"); } public void CreateGUI() { // Each editor window contains a root VisualElement object VisualElement root = rootVisualElement; // VisualElements objects can contain other VisualElement following a tree hierarchy Label label = new Label("Hello World!"); root.Add(label); // Create button Button button = new Button(); button.name = "button"; button.text = "Button"; root.Add(button); // Create toggle Toggle toggle = new Toggle(); toggle.name = "toggle"; toggle.label = "Toggle"; root.Add(toggle); } }
| focusedWindow | 当前具有键盘焦点的 EditorWindow。(只读) |
| mouseOverWindow | 鼠标光标当前所在的 EditorWindow。(只读) |
| autoRepaintOnSceneChange | 启用此属性,以便在 SceneView 被修改时自动重绘窗口。 |
| dataModeController | IDataModeController 的实例,用于处理当前窗口的数据模式功能。 |
| docked | 如果 EditorWindow 被停靠,则返回 true。 |
| hasFocus | 如果 EditorWindow 处于焦点状态,则返回 true。 |
| hasUnsavedChanges | 此属性指定在窗口关闭之前,编辑器是否提示用户保存或放弃未保存的更改。 |
| maximized | 此窗口是否已最大化? |
| maxSize | 当窗口处于浮动或模态状态时的最大尺寸。当窗口被停靠时,最大尺寸不适用。 |
| minSize | 当窗口处于浮动或模态状态时的最小尺寸。当窗口被停靠时,最小尺寸不适用。 |
| overlayCanvas | 此窗口的 OverlayCanvas。 |
| position | 窗口在屏幕空间中的所需位置。 |
| rootVisualElement | 检索此窗口层次结构的根可视元素。 |
| saveChangesMessage | 如果提示用户保存,则显示给用户的消息 |
| titleContent | 用于绘制 EditorWindow 标题的 GUIContent。 |
| wantsLessLayoutEvents | 指定在所有用户事件(例如,EventType.MouseDown 或 EventType.KeyDown)之前执行布局传递,还是仅在重绘事件之前执行布局传递。 |
| wantsMouseEnterLeaveWindow | 检查此编辑器窗口中的 GUI 是否接收 MouseEnterWindow 和 MouseLeaveWindow 事件。 |
| wantsMouseMove | 检查此编辑器窗口中的 GUI 是否接收 MouseMove 事件。 |
| BeginWindows | 标记所有弹出窗口的开始区域。 |
| 关闭 | 关闭编辑器窗口。 |
| DiscardChanges | 放弃对窗口内容的未保存更改。 |
| EndWindows | 关闭使用 EditorWindow.BeginWindows 开始的窗口组。 |
| Focus | 将键盘焦点移动到另一个 EditorWindow。 |
| GetExtraPaneTypes | 获取与窗口关联的额外窗格。 |
| RemoveNotification | 停止显示通知消息。 |
| Repaint | 使窗口重绘。 |
| SaveChanges | 对窗口的内容执行保存操作。 |
| SendEvent | 将事件发送到窗口。 |
| Show | 显示 EditorWindow 窗口。 |
| ShowAsDropDown | 显示具有下拉行为和样式的窗口。 |
| ShowAuxWindow | 在辅助窗口中显示编辑器窗口。 |
| ShowModal | 显示模态编辑器窗口。 |
| ShowModalUtility | 将 EditorWindow 显示为浮动模态窗口。 |
| ShowNotification | 显示通知消息。 |
| ShowPopup | 使用弹出式框架显示编辑器窗口。 |
| ShowTab | 显示停靠的编辑器窗口。 |
| ShowUtility | 将 EditorWindow 显示为浮动实用程序窗口。 |
| TryGetOverlay | 从 EditorWindow 画布中获取具有匹配 ID 的叠加层。 |
| OnBackingScaleFactorChanged | 当更改此 EditorWindow 的 UI 缩放比例时调用。 |
| CreateWindow | 创建类型为 T 的 EditorWindow。 |
| FocusWindowIfItsOpen | 如果指定类型的 EditorWindow 已打开,则将焦点设置为第一个找到的窗口。 |
| GetWindow | 返回当前位于屏幕上的第一个类型为 windowType 的 EditorWindow。 |
| GetWindowWithRect | 返回当前位于屏幕上的第一个类型为 t 的 EditorWindow。 |
| HasOpenInstances | 检查编辑器窗口是否已打开。 |
| Awake | 在新窗口打开时调用。 |
| CreateGUI | 当 EditorWindow 的 rootVisualElement 已准备好填充时,将调用 CreateGUI。 |
| hasUnsavedChanges | 此属性指定在窗口关闭之前,编辑器是否提示用户保存或放弃未保存的更改。 |
| OnBecameInvisible | 在窗口从容器视图中删除或不再在 EditorWindow 的选项卡式集合中可见之后调用。 |
| OnBecameVisible | 在窗口添加到容器视图之后调用。 |
| OnDestroy | 调用 OnDestroy 以关闭 EditorWindow 窗口。 |
| OnFocus | 当窗口获得键盘焦点时调用。 |
| OnGUI | 在此处实现您自己的编辑器 GUI。 |
| OnHierarchyChange | 当层次结构中的对象或一组对象发生变化时发送的消息的处理程序。 |
| OnInspectorUpdate | OnInspectorUpdate 每秒调用 10 次,以便检查器有机会更新。 |
| OnLostFocus | 当窗口失去键盘焦点时调用。 |
| OnProjectChange | 每当项目状态发生变化时发送的消息的处理程序。 |
| OnSelectionChange | 每当选择发生变化时调用。 |
| saveChangesMessage | 如果提示用户保存,则显示给用户的消息 |
| Update | 每秒在所有可见窗口上调用多次。 |
| windowFocusChanged | 每当获得焦点的编辑器窗口发生变化时调用。 |
| GetInstanceID | 获取对象的实例 ID。 |
| ToString | 返回对象的名称。 |
| Destroy | 删除游戏对象、组件或资产。 |
| DestroyImmediate | 立即销毁对象 obj。强烈建议您使用 Destroy 代替。 |
| DontDestroyOnLoad | 加载新场景时,不要销毁目标对象。 |
| FindAnyObjectByType | 检索类型为 type 的任何活动加载的对象。 |
| FindFirstObjectByType | 检索类型为 type 的第一个活动加载的对象。 |
| FindObjectsByType | 检索类型为 type 的所有加载对象的列表。 |
| Instantiate | 克隆对象 original 并返回克隆。 |
| InstantiateAsync | 捕获原始对象(必须与某些游戏对象相关)的快照,并返回 AsyncInstantiateOperation。 |
| CreateInstance | 创建可脚本化对象的实例。 |
| bool | 对象是否存在? |
| operator != | 比较两个对象是否引用不同的对象。 |
| operator == | 比较两个对象引用,以查看它们是否引用同一个对象。 |
| Awake | 当创建 ScriptableObject 的实例时调用。 |
| OnDisable | 当可脚本化对象超出范围时,将调用此函数。 |
| OnEnable | 加载对象时,将调用此函数。 |
| OnValidate | 仅编辑器功能,当脚本加载或检查器中的值发生变化时,Unity 会调用该功能。 |
| Reset | 重置为默认值。 |