Unity3D :UXML简介
推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生
UXML简介
UXML格式的灵感来自HTML,XAML和XML。如果你以前使用过这些格式,你会发现UXML的相似之处。但是,UXML 格式包含一些细微的差异,以提供使用 Unity 的有效方式。本页通过示例介绍UXML的格式。
下面是一个示例 UXML 文件。它包含几个内置的用户界面
提示用户做出选择的控件:
<?xml version="1.0" encoding="utf-8"?>
<UXML ...>
<Box>
<Toggle name="boots" label="Boots" value="false" />
<Toggle name="helmet" label="Helmet" value="false" />
<Toggle name="cloak" label="Cloak of invisibility" value="false"/>
</Box>
<Box>
<Button name="cancel" text="Cancel" />
<Button name="ok" text="OK" />
</Box>
</UXML>
UXML 声明
上面 UXML 示例中的第一行代码是 UXML 声明。声明是可选的。如果确实包含 UXML 声明,则必须将其放在第一行。UXML 声明需要 .该属性在 UXML 声明中是可选的。如果包括该属性,则必须声明文件的字符编码。versionencodingencoding
文档根目录
下一行定义文档根目录 。该元素包括命名空间前缀定义的属性和架构定义文件的位置。可以按任意顺序指定这些属性。<UXML><UXML>
Namespace
在 UI 工具包中,每个元素都在 或 命名空间中定义:UnityEngine.UIElementsUnityEditor.UIElements
- 命名空间包含定义为 Unity 运行时一部分的元素。
UnityEngine.UIElements
- 命名空间包含 Unity 编辑器中可用的元素。若要完全指定元素,必须在其命名空间前面加上该元素。
UnityEditor.UIElements
例如,如果要在 UXML 模板中使用该元素,则必须指定 。Button<UnityEngine.UIElements:Button />
若要更轻松地指定命名空间,可以定义命名空间前缀。例如, 将前缀定义为 。定义命名空间前缀后,可以使用它来指定命名空间。例如,等效于xmlns:engine="UnityEngine.UIElements"engineUnityEngine.UIElements<engine:Button /><UnityEngine.UIElements:Button />
还可以通过排除前缀来定义默认命名空间。例如,定义为默认命名空间。这意味着,例如,指定等效于xmlns="UnityEngine.UIElements"UnityEngine.UIElements<Button /><UnityEngine.UIElements:Button />
要创建具有自动定义的命名空间的 UXML 文件,请选择资产>创建> UI 工具包> UI 文档。
注意:如果定义自己的元素,请不要在 or 命名空间中定义自定义控件类。否则,UI 生成器将隐藏自定义控件。UnityEngine.UIElementsUnityEditor.UIElements
架构定义
架构定义将验证您的 UXML 文件。它指定每个 UXML 元素可以包含的属性和子元素。
在 UXML 文件中,根元素的 或 属性指定架构定义文件的位置。xsi:noNamespaceSchemaLocationxsi:schemaLocation<UXML>
要使用最新的架构定义创建 UXML 文件,请选择“资产”>“创建> UI 工具包”>“UI 文档”。这将创建一个包含根元素属性的文件。xsi:noNamespaceSchemaLocation
注意:如果文本编辑器无法识别该属性,请改用该属性。xsi:noNamespaceSchemaLocationxsi:schemaLocation
要强制更新 UXML 架构定义,请选择资产>更新 UXML 架构。
UXML 元素
UI 的定义位于根中。UI 定义是一系列嵌套的 UXML 元素,每个元素表示一个可视元素。<UXML>
元素名称对应于要实例化的元素的 C# 类名。大多数元素都具有属性,其值映射到 C# 中的相应类属性。除了其父类的继承属性外,每个元素都有自己的一组属性。 是所有元素的基类,它为所有元素提供以下属性:VisualElement
name
:元素的标识符。名称应该是唯一的。picking-mode
:设置为响应鼠标事件或忽略鼠标事件。PositionIgnore
focus-index
:(已过时)使用和 。tabIndexfocusable
tabindex
:定义当前元素的制表符位置的整数。focusable
:一个布尔值,指示元素是否可聚焦。class
:以空格分隔的标识符列表,用于表征元素。使用类为元素指定视觉样式。还可以使用类在 UQuery 中选择一组元素。tooltip
:当鼠标悬停在元素上时显示为工具提示的字符串。view-data-key
:定义用于元素序列化的键的字符串。
其他资源
- 向 UXML 添加样式
- 重用 UXML 文件
- 从UXML引用其他文件
- UXML 元素参考
由3D建模学习工作室整理翻译,转载请注明出处!