用于显示继承自 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 类名。 |
Show | 显示具有给定 PopupWindowContent 的弹出窗口。 |
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 | 检查此 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 | 每当聚焦的编辑器窗口发生更改时调用。 |