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建模学习工作室整理翻译,转载请注明出处!

上一篇:Unity3D :坐标和定位系统 (mvrlink.com)

下一篇:Unity3D :向 UXML 添加样式 (mvrlink.com)

NSDT场景编辑器 | NSDT 数字孪生 | GLTF在线编辑器 | 3D模型在线转换 | UnrealSynth虚幻合成数据生成器 | 3D模型自动纹理化工具
2023 power by nsdt©鄂ICP备2023000829号