版本: Unity 6 (6000.0)
语言英语
  • C#

EditorWindow

UnityEditor 中的类

/

继承自:ScriptableObject

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交的内容,但我们确实会阅读用户提供的每项更改建议,并在适用时进行更新。

关闭

提交失败

由于某种原因,您的更改建议无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

描述

从该类派生以创建自定义编辑器窗口。

使用此类创建编辑器窗口,这些窗口可以独立浮动或作为选项卡停靠,类似于 Unity 编辑器中的默认窗口。

可以使用 MenuItem 属性配置编辑器窗口,以便在 Unity 编辑器菜单中打开。

创建自定义编辑器窗口时,请遵循以下指南

  • 将依赖于 UXML/USS 加载的代码放在 CreateGUI 方法中,以确保所有必要的资产可用。
  • 将事件注册代码保留在 CreateGUI 中,或在 CreateGUI 被调用之后。

下图显示了编辑器窗口的执行顺序

  • OnEnable: 当脚本加载或对象启用时调用。
  • EditorApplication.isUpdating: 如果为 true,则编辑器当前正在刷新 AssetDatabase
  • CreateGUI: 如果编辑器未更新,则生成图形用户界面。
  • Update: 每帧调用一次以更新脚本的逻辑。
  • OnGUI: 每帧调用多次以渲染和处理 GUI 事件。
  • OnDisable: 当脚本禁用或对象销毁时调用,以完成并清理资源。

有关如何创建对用户输入做出反应的编辑器窗口的示例,请参阅 使用 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 被修改时自动重绘窗口。
dataModeControllerIDataModeController 的实例,用于处理当前窗口的数据模式功能。
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当层次结构中的对象或一组对象发生变化时发送的消息的处理程序。
OnInspectorUpdateOnInspectorUpdate 每秒调用 10 次,以便检查器有机会更新。
OnLostFocus当窗口失去键盘焦点时调用。
OnProjectChange每当项目状态发生变化时发送的消息的处理程序。
OnSelectionChange每当选择发生变化时调用。
saveChangesMessage如果提示用户保存,则显示给用户的消息
Update每秒在所有可见窗口上调用多次。

事件

windowFocusChanged每当获得焦点的编辑器窗口发生变化时调用。

继承的成员

属性

hideFlags对象是否应隐藏、与场景一起保存或可由用户修改?
name对象的名称。

公共方法

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重置为默认值。