一、什么是叠加?
-
Overlay,叠加,是指Unity视图中的悬浮工具栏,如下图所示。
其中,按键盘上“`”键(Esc下面)可以显示叠加层的设置选项。 -
叠加分为两种:面板叠加和工具栏叠加。二者的区别主要有两方面:
(1)包含元素:工具栏元素可以包括文本、图标或两者的结合。而面板元素可以是任意控件。
(2)展示布局:在于工具栏叠加可以按不同布局展示:Panel, Horizontal, Vertical。而面板只能按Panel一种布局展示。二者都可以展开或收起。
-
Unity视图中默认的叠加除了”Orientation”是面板叠加外,其他都是工具栏叠加。
二、如何创建叠加?
(一)编辑器工具栏元素
工具栏元素可以是文本、图标或二者的组合。
使用[]注册工具栏元素。EditorToolbarElement(Identifier, EditorWindowType)ToolbarOverlay
可以继承任何VisualElement类型并自行提供样式,但工具栏元素需要特定的样式,因此最好继承预定义类型之一:EditorToolbar。
- 按钮:EditorToolbarButton,继承自UnityEditor.UIElements.ToolbarButton
- 下拉列表:EditorToolbarDropdown,继承自EditorToolbarButton
- 下拉切换:EditorToolbarDropdownToggle,继承自UnityEngine.UIElements.BaseField
- 切换:EditorToolbarToggle:继承自UnityEditor.UIElements.ToolbarToggle
提示:如果工具栏水平或垂直停靠,则文本将被剪裁或不可见,因此最好为每个工具樯指定一个图标。
(二)创建面板叠加
所有的叠加都必须继承于Overlay类,并且实现CreatePanelContent方法。下面我们创建一个基本的面板。
- 在Editor文件夹中新建C#脚本并命名为OverlayExample.cs。
- 打开刚创建的脚本。
- 添加三个命名空间
using UnityEditor;
using UnityEditor.Overlays;
using UnityEngine.UIElements;
- 删除OverlayExample类中默认的内容,并将OverlayExample的继承改为Overlay。
- 重写CreatePanelContent方法并添加内容。
- 为OverlayExample类添加OverlayAttribute属性。
- 在OverlayAttribute属性中,指定此叠加将在哪种类型的窗口中使用:
- 如果你想让叠加在所有编辑器窗口中使用,可以指定为EditorWindow类型。
- 如果你想让叠加只在Scene视图中使用,可以指定为SceneView类型。
- 在OverlayAttribute属性中,添加name, ID,以及要在叠加中展示的名字。
[Overlay(typeof(SceneView), “My Custom Overlay”, true)] - 为叠加添加图标,这样当叠加折叠时会以图标形式展示。可以通过为Overlay类添加Icon属性来设置图标。如果不设置的话,叠加折叠时将默认展示叠加名称的前两个字母或者前两个单词的首字母。
[Icon(“Assets/Icons/SpriteLight.png”)]