包含此页的版本:
不含此页的版本:
UXML 格式的灵感来自 HTML、XAML 和 XML。如果您以前使用过这些格式,您会发现 UXML 中的相似之处。但是,UXML 格式包含一些细微的差异,以提供一种使用 Unity 的有效方法。本页通过示例介绍 UXML 的格式。
下面是一个示例UXML文件。它包含几个内置的UI控件,提示用户做出选择:
<?xml version="1.0" encoding="utf-8"?>
<engine:UXML
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:engine="UnityEngine.UIElements"
xmlns:editor="UnityEditor.UIElements"
xsi:noNamespaceSchemaLocation="../../UIElementsSchema/UIElements.xsd"
>
<engine:Box>
<engine:Toggle name="boots" label="Boots" value="false" />
<engine:Toggle name="helmet" label="Helmet" value="false" />
<engine:Toggle name="cloak" label="Cloak of invisibility" value="false"/>
</engine:Box>
<engine:Box>
<engine:Button name="cancel" text="Cancel" />
<engine:Button name="ok" text="OK" />
</engine:Box>
</engine:UXML>
上面 UXML 示例中的第一行代码是 UXML 声明。声明是可选的。如果您确实包含 UXML 声明,则必须将其放在第一行。UXML 声明需要version. 这encoding属性在 UXML 声明中是可选的。如果包含encoding属性,则必须声明文件的字符编码。
下一行定义文档根目录<engine:UXML>. 这<engine:UXML>元素包括命名空间前缀定义的属性和架构定义文件的位置。您可以按任何顺序指定这些属性。
在 UI Toolkit 中,每个元素都定义在UnityEngine.UIElements或UnityEditor.UIElementsNamespace:
UnityEngine.UIElements命名空间包含定义为 Unity 运行时一部分的元素。UnityEditor.UIElements命名空间包含 Unity 编辑器中可用的元素。要完全指定元素,您必须在其命名空间前添加其前缀。例如,如果您想使用Button元素,您必须指定<UnityEngine.UIElements:Button />.
为了更轻松地指定命名空间,您可以定义命名空间前缀。 例如xmlns:engine="UnityEngine.UIElements"定义engine前缀为UnityEngine.UIElements. 定义命名空间前缀后,可以使用它来指定命名空间。 例如<engine:Button />相当于<UnityEngine.UIElements:Button />
您还可以通过排除前缀来定义默认命名空间。 例如xmlns="UnityEngine.UIElements"定义UnityEngine.UIElements作为默认命名空间。这意味着指定,例如,<Button />相当于<UnityEngine.UIElements:Button />
要创建具有自动定义命名空间的UXML文件,请选择 资产(Asset) > 创建>UI工具包(Create UI Toolkit > UI 文档)。
注意:如果您定义自己的元素,请不要在UnityEngine.UIElements或UnityEditor.UIElementsNamespace。 否则,UI Builder 将隐藏您的自定义控件。
架构定义验证你的UXML文件。它指定每个UXML元素可以包含哪些属性和子元素。
在UXML文件中,xsi:noNamespaceSchemaLocation或xsi:schemaLocation属性<engine:UXML>root 元素指定架构定义文件的位置。
要使用最新的架构定义创建UXL文件,请选择 资产(Assets) > 创建>UI工具包(UI Toolkit> UI文档(UI Document)。这将创建一个文件,其中包含xsi:noNamespaceSchemaLocation属性。
注意:如果您的文本编辑器无法识别xsi:noNamespaceSchemaLocation属性,请使用xsi:schemaLocation属性。
要强制更新UXL架构定义,请选择 资产(Assets) > 更新UXML架构(Update UXML Schema)。
UI 的定义位于<engine:UXML>根。 UI定义是一系列嵌套的UXML元素,每个元素代表一个视觉元素。
元素名称对应于要实例化的元素的 C# 类名。大多数元素都有属性,其值映射到 C# 中的相应类属性。除了其父类的继承属性外,每个元素都有自己的一组属性。VisualElement是所有元素的基类,它为所有元素提供以下属性:
name:元素的标识符。名称应是唯一的。picking-mode:设置为Position响应鼠标事件或Ignore以忽略鼠标事件。focus-index:(过时)用途tabIndex和focusable.tabindex:定义当前元素的制表符位置的整数。focusable:指示元素是否可聚焦的布尔值。class:表征元素的标识符的空格分隔列表。使用类为元素分配视觉样式。您还可以使用类在UQuery中选择一组元素。tooltip:当鼠标悬停在元素上时显示为工具提示的字符串。view-data-key:定义用于序列化元素的键的字符串。