版本:Unity 6 (6000.0)
语言:English
使用 UXML 构建 UI
向 UXML 添加样式

UXML 简介

UXML 格式的灵感来自 HTMLXAMLXML。如果您以前使用过这些格式,您会发现 UXML 中存在相似之处。但是,UXML 格式包含一些细微差异,以便提供一种有效的方式来使用 Unity。本页通过示例介绍 UXML 的格式。

以下是 UXML 文件示例。它包含几个内置的 UI(用户界面) 允许用户与您的应用程序交互。Unity 目前支持三种 UI 系统。 更多信息
参见 词汇表
控件,提示用户做出选择

<?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 声明需要一个 version。在 UXML 声明中,encoding 属性是可选的。如果您包含 encoding 属性,则必须声明文件的字符编码。

文档根

下一行定义文档根,<UXML><UXML> 元素包含命名空间前缀定义和模式定义文件位置的属性。您可以按任意顺序指定这些属性。

命名空间

在 UI 工具包中,每个元素都在 UnityEngine.UIElementsUnityEditor.UIElements 命名空间中定义

  • UnityEngine.UIElements 命名空间包含作为 Unity 运行时一部分定义的元素。
  • UnityEditor.UIElements 命名空间包含在 Unity 编辑器中可用的元素。要完全指定一个元素,必须在其前面加上其命名空间。

例如,如果要在 UXML 模板中使用 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 文件,请选择 资源 > 创建 > UI 工具包 > UI 文档

注意:如果定义自己的元素,请不要在 UnityEngine.UIElementsUnityEditor.UIElements 命名空间中定义自定义控件类。否则,UI 构建器将隐藏您的自定义控件。

模式定义

模式定义验证您的 UXML 文件。它指定每个 UXML 元素可以包含哪些属性和子元素。

在 UXML 文件中,<UXML> 根元素的 xsi:noNamespaceSchemaLocationxsi:schemaLocation 属性指定模式定义文件的位置。

要创建具有最新模式定义的 UXML 文件,请选择 资源 > 创建 > UI 工具包 > UI 文档。这将创建一个在根元素中包含 xsi:noNamespaceSchemaLocation 属性的文件。

注意:如果您的文本编辑器无法识别 xsi:noNamespaceSchemaLocation 属性,请改用 xsi:schemaLocation 属性。

要强制更新 UXML 模式定义,请选择 资源 > 更新 UXML 模式

UXML 元素

UI 的定义位于 <UXML> 根元素内。UI 定义是一系列嵌套的 UXML 元素,每个元素代表一个视觉元素。

元素名称对应于要实例化的元素的 C# 类名。大多数元素都有属性,并且它们的属性值映射到 C# 中相应的类属性。每个元素除了继承其父类的属性之外,还具有自己的一组属性。VisualElement 是所有元素的基类,它为所有元素提供以下属性

  • name:元素的标识符。名称应唯一。
  • picking-mode:设置为 Position 以响应鼠标事件,或设置为 Ignore 以忽略鼠标事件。
  • focus-index:(已弃用) 使用 tabIndexfocusable
  • tabindex:一个整数,定义当前元素的制表位位置。
  • focusable:一个布尔值,指示元素是否可聚焦。
  • class:一个用空格分隔的标识符列表,用于描述元素。使用类将视觉样式分配给元素。您还可以使用类在 UQuery 中选择一组元素。
  • tooltip:当鼠标悬停在元素上时显示为工具提示的字符串。
  • view-data-key:一个字符串,定义用于元素序列化的键。

其他资源

使用 UXML 构建 UI
向 UXML 添加样式