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

PopupWindow

UnityEditor 中的类

/

继承自:EditorWindow

建议更改

成功!

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

关闭

提交失败

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

关闭

取消

描述

用于显示继承自 PopupWindowContent 的弹出窗口的类。

弹出窗口无边框,不可拖动或调整大小。当它们失去焦点时,它们也会自动关闭。它们旨在显示短暂的信息或选项。

编辑器中弹出窗口的一个示例是“场景视图效果”选项,位于编辑器的场景视图工具栏中



下面是一个自定义弹出窗口的示例,它通过编辑器窗口中的按钮显示。弹出窗口具有三个切换值,并在失去焦点时自动关闭。该示例以两个脚本的形式给出。第一个定义了一个可以通过菜单项打开的编辑器窗口。该编辑器窗口有一个按钮显示弹出窗口。第二个脚本将弹出窗口的内容本身定义为一个单独的类。

首先,这是启动弹出窗口的简单编辑器窗口的代码

using UnityEngine;
using UnityEditor;

public class EditorWindowWithPopup : EditorWindow { // Add menu item [MenuItem("Examples/Popup Example")] static void Init() { EditorWindow window = EditorWindow.CreateInstance<EditorWindowWithPopup>(); window.Show(); }

Rect buttonRect; void OnGUI() { { GUILayout.Label("Editor window with Popup example", EditorStyles.boldLabel); if (GUILayout.Button("Popup Options", GUILayout.Width(200))) { PopupWindow.Show(buttonRect, new PopupExample()); } if (Event.current.type == EventType.Repaint) buttonRect = GUILayoutUtility.GetLastRect(); } } }

接下来,这是弹出窗口本身的代码

using UnityEngine;
using UnityEditor;

public class PopupExample : PopupWindowContent { bool toggle1 = true; bool toggle2 = true; bool toggle3 = true;

public override Vector2 GetWindowSize() { return new Vector2(200, 150); }

public override void OnGUI(Rect rect) { GUILayout.Label("Popup Options Example", EditorStyles.boldLabel); toggle1 = EditorGUILayout.Toggle("Toggle 1", toggle1); toggle2 = EditorGUILayout.Toggle("Toggle 2", toggle2); toggle3 = EditorGUILayout.Toggle("Toggle 3", toggle3); }

public override void OnOpen() { Debug.Log("Popup opened: " + this); }

public override void OnClose() { Debug.Log("Popup closed: " + this); } }

每个脚本都应另存为与其类名相同的单独文件。两者都不是行为,因此您无需将它们放置在游戏对象上。将它们放入项目后,尝试通过转到新的“示例”菜单并选择“弹出窗口示例”来进行测试。然后单击新编辑器窗口中的按钮以显示弹出窗口选项窗口。

.

静态属性

invalidSizeLabelUssClassName内容大小无效时显示的标签的 USS 类名。

受保护方法

OnDisable请参阅 ScriptableObject.OnEnable。
OnEnable请参阅 ScriptableObject.OnDisable。

静态方法

Show显示具有给定 PopupWindowContent 的弹出窗口。

继承的成员

静态属性

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检查此 Editor 窗口中的 GUI 是否接收 MouseEnterWindow 和 MouseLeaveWindow 事件。
wantsMouseMove检查此 Editor 窗口中的 GUI 是否接收 MouseMove 事件。
hideFlags对象是否应隐藏、与场景一起保存或用户可修改?
name对象的名称。

公共方法

BeginWindows标记所有弹出窗口的开始区域。
关闭关闭编辑器窗口。
DiscardChanges放弃对窗口内容的未保存更改。
EndWindows关闭使用 EditorWindow.BeginWindows 启动的窗口组。
Focus将键盘焦点移动到另一个 EditorWindow。
GetExtraPaneTypes获取与窗口关联的其他窗格。
RemoveNotification停止显示通知消息。
Repaint使窗口重绘。
SaveChanges对窗口内容执行保存操作。
SendEvent将事件发送到窗口。
Show显示 EditorWindow 窗口。
ShowAsDropDown显示具有下拉行为和样式的窗口。
ShowAuxWindow在辅助窗口中显示编辑器窗口。
ShowModal显示模态编辑器窗口。
ShowModalUtility将 EditorWindow 显示为浮动模态窗口。
ShowNotification显示通知消息。
ShowPopup使用弹出式框架显示编辑器窗口。
ShowTab显示停靠的 EditorWindow。
ShowUtility将 EditorWindow 显示为浮动实用程序窗口。
TryGetOverlay从 EditorWindow 画布中获取具有匹配 ID 的 Overlay。
GetInstanceID获取对象的实例 ID。
ToString返回对象的名称。

受保护方法

OnBackingScaleFactorChanged当此 EditorWindow 的 UI 缩放比例发生更改时调用。

静态方法

CreateWindow创建类型为 T 的 EditorWindow。
FocusWindowIfItsOpen如果指定类型的 EditorWindow 已打开,则聚焦找到的第一个该类型的 EditorWindow。
GetWindow返回当前屏幕上第一个类型为 windowType 的 EditorWindow。
GetWindowWithRect返回当前屏幕上第一个类型为 t 的 EditorWindow。
HasOpenInstances检查编辑器窗口是否已打开。
Destroy移除游戏对象、组件或资源。
DestroyImmediate立即销毁对象 obj。强烈建议您改用 Destroy。
DontDestroyOnLoad加载新场景时不要销毁目标对象。
FindAnyObjectByType检索类型为 type 的任何活动的已加载对象。
FindFirstObjectByType检索类型为 type 的第一个活动的已加载对象。
FindObjectsByType检索类型为 type 的所有已加载对象的列表。
Instantiate克隆对象 original 并返回克隆。
InstantiateAsync捕获原始对象(必须与某个游戏对象相关)的快照,并返回 AsyncInstantiateOperation。
CreateInstance创建可脚本化对象的实例。

运算符

bool对象是否存在?
operator !=比较两个对象是否引用不同的对象。
operator ==比较两个对象引用以查看它们是否引用同一个对象。

消息

Awake在新窗口打开时调用。
CreateGUI当 EditorWindow 的 rootVisualElement 准备好填充时调用 CreateGUI。
hasUnsavedChanges此属性指定在窗口关闭之前,编辑器是否提示用户保存或放弃未保存的更改。
OnBecameInvisible从容器视图中移除窗口或在 EditorWindow 的选项卡式集合中不再可见后调用。
OnBecameVisible将窗口添加到容器视图后调用。
OnDestroy调用 OnDestroy 以关闭 EditorWindow 窗口。
OnFocus窗口获得键盘焦点时调用。
OnGUI在此处实现您自己的编辑器 GUI。
OnHierarchyChange层次结构中对象或对象组发生更改时发送的消息的处理程序。
OnInspectorUpdate每秒调用 10 次 OnInspectorUpdate,以使检查器有机会更新。
OnLostFocus窗口失去键盘焦点时调用。
OnProjectChange每当项目状态发生更改时发送的消息的处理程序。
OnSelectionChange每当选择发生更改时调用。
saveChangesMessage如果提示用户保存,则显示给用户的消息
Update每秒在所有可见窗口上调用多次。
Awake创建 ScriptableObject 的实例时调用。
OnDestroy当可脚本化对象将被销毁时调用此函数。
OnValidate当脚本加载或 Inspector 中的值发生更改时,Unity 调用的仅编辑器函数。
Reset重置为默认值。

事件

windowFocusChanged每当聚焦的编辑器窗口发生更改时调用。