UI 工具包中最基本的构建块是“VisualElement”。这些元素被组织为具有父子关系的层级结构树。这称为视觉树。
您需要向层级视图添加元素才能创建__ UI__(即用户界面,User Interface)让用户能够与您的应用程序进行交互。Unity 目前支持三种 UI 系统。更多信息
See in Glossary。要在 UI Builder 中将元素添加到层级视图中,请将其从库 (Library) 选项卡拖入层级视图 (Hierarchy) 窗口。还可以双击库 (Library) 中的元素以将其附加到层级视图 (Hierarchy)。默认情况下,元素未命名,因此它们在层级视图 (Hierarchy) 中显示为其类型名称。
要为元素命名,请在层级视图 (Hierarchy) 中双击该项,或在元素的检视面板窗口中更新名称 (Name) 属性。
在 UI 工具包中,不强制要求元素名称唯一,它们仅用于在用户界面内进行识别。UI Builder 不会将元素名称用于任何内部标识或功能。
要构建层级结构,可以在层级视图 (Hierarchy) 中拖动一个或多个元素以对它们进行重新排序或在父级之间移动:
还可以将元素拖入和拖出画布,画布中会显示一条黄线来指示元素位置:
要复制、粘贴、复制或删除一个或多个选定元素,请右键单击某个元素,然后选择菜单中的相应选项。还可以使用操作系统的标准快捷键。
在层级视图 (Hierarchy) 面板中复制元素时,它会复制元素及其子项的 UXML 文本表示形式。这意味着您可以将其直接粘贴到文本编辑器中。还可以复制 UXML 文本并将其粘贴到 UI Builder 中。
对元素执行的所有操作也会应用于其所有子项。例如,删除一个元素会删除其所有子元素,而复制一个元素会复制其下的整个元素子树。
将元素从库 (Library) 选项卡拖动到层级视图 (Hierarchy) 选项卡时,可能会注意到一些额外的子元素以灰色显示。这些就是只读元素。一些内置 UI 控件和一些在创建时创建内部层级结构的自定义元素会出现这种情况。
当向 VisualElement 添加子元素时,子元素将添加到此父元素的 contentContainer。例如,下面的 ScrollView 有一个位于 contentContainer 内部的 Foldout 子元素。它还有几个位于影子树中的 Scroller 子元素。影子树是位于此元素 contentContainer 之外的子元素层级结构。
由于 UI Builder 只能编辑其在 UXML 文档中可以表示的内容,因此无法编辑内部层级结构。UXML 不是实时 UI 层级结构的直接副本,而是一套指令集。
在 UXML 中,元素具有各自的属性,可以在 UXML 中进行设置。您可以将它们视为构造函数或初始化参数。这其中包含 name 属性。基础的 VisualElement 类附带了一些所有元素共有的标准属性(因为所有元素都继承自 VisualElement),例如 name、tooltip 和 tabindex。更高级的元素和控件具有可以设置的其他属性,例如,Label 会添加 text 属性。
注意:您可以使用 Enter 键为 text 属性添加换行字符。
所有的标准和自定义属性都显示在检视面板窗口顶部的属性 (Attribute) 部分中。
您可以在属性部分中设置属性的值。如果字段显示为粗体,字段标签左侧有实线,则意味着属性已设置,且未使用默认值。例如,将 tooltip 从空设置为 test,然后又设置回空,这与一开始就不设置是不一样的:第一种情况是 unset,而第二种情况是 set to empty。this attribute is set 的意思是在 UXML 文本中该元素存在一项将此属性设置为 a 值的内容
如果该属性未出现在 UXML 文件中,则为 not set。
要取消设置属性,请右键单击字段的标签并选择取消设置 (Unset)。
要取消设置所有属性,请右键单击字段的标签并选择全部取消设置 (Unset Al)l。
可以直接在画布中更改的唯一属性是文本元素(例如 Button 或 Label)上的 text 属性。要更改画布中的 text 属性,请在画布 (Canvas) 中双击该属性。
要提交更改,请按 Enter 键。如果 text 属性包含换行字符,请使用 Shift + Enter 提交更改。
要取消更改,请按 Esc 键。