版本:Unity 6 (6000.0)
语言:英语
从 UXML 引用其他文件
从 C# 脚本实例化 UXML

加载 UXML 和 USS C# 脚本

Unity 在 C# 中将 UXML 文件表示为VisualTreeAsset对象,并将 USS 文件表示为StyleSheet对象。由于VisualTreeAssetStyleSheet是常规的 Unity 资产,因此您可以使用 Unity 的标准工作流程来加载它们。

使用序列化引用

Unity 会自动检测来自 C# 脚本一段代码,允许您创建自己的组件、触发游戏事件、随着时间的推移修改组件属性并以任何您喜欢的方式响应用户输入。 更多信息
参见 术语表
中类型为VisualTreeAssetStyleSheet的字段。您可以使用 检查器一个 Unity 窗口,显示有关当前选定的游戏对象、资产或项目设置的信息,允许您检查和编辑值。 更多信息
参见 术语表
设置对项目中导入的特定 UXML 或 USS 文件的引用。即使资产在项目中的位置发生变化,此类引用仍然有效。

在脚本中使用此功能有三种方法

描述 如何显示检查器 引用保存位置
自定义脚本的实例(例如MonoBehaviour 选择包含脚本实例的 游戏对象Unity 场景中的基本对象,可以表示角色、道具、场景、摄像机、路径点等等。游戏对象的功 能由附加到它的组件定义。 更多信息
参见 术语表
场景场景包含游戏环境和菜单。可以将每个唯一的场景文件视为一个唯一的关卡。在每个场景中,您放置环境、障碍物和装饰,从本质上讲是分段设计和构建您的游戏。 更多信息
参见 术语表
内部
EditorWindowEditor派生的脚本的默认引用 在项目浏览器中选择实际的 C# 文件 在与脚本关联的元数据文件内
项目中从ScriptableObject派生的自定义资产 在项目浏览器中选择资产 在资产本身的序列化数据内

注意:默认引用适用于所有从MonoBehaviourScriptableObject派生的脚本。它提供了一种为脚本的序列化字段填充默认值的方法。

以下示例MonoBehaviour类从检查器接收 UXML 文件和 USS 文件列表

using UnityEngine;
using UnityEngine.UIElements;

public class MyBehaviour : MonoBehaviour
{
  // Note that public fields are automatically exposed in the Inspector
  public VisualTreeAsset mainUI;
  [Reorderable]
  public StyleSheet[] seasonalThemes;
}

以下示例EditorWindow类从检查器接收默认引用

using UnityEditor;
using UnityEngine.UIElements;

public class MyWindow : EditorWindow
{
  [SerializeField]
  private VisualTreeAsset uxml;
  [SerializeField]
  private StyleSheet uss;
}

使用 Asset Database(仅限编辑器)

您可以使用AssetDatabase类按路径或 GUID 加载您的 UI(用户界面) 允许用户与您的应用程序交互。Unity 目前支持三种 UI 系统。 更多信息
参见 术语表
资产。

以下示例显示了如何按路径查找资产

VisualTreeAsset uxml = AssetDatabase.LoadAssetAtPath<VisualTreeAsset>("Assets/Editor/main_window.uxml");
StyleSheet uss = AssetDatabase.LoadAssetAtPath<StyleSheet>("Assets/Editor/main_styles.uss");

以下示例显示了如何从包中按路径查找资产

VisualTreeAsset uxml = AssetDatabase.LoadAssetAtPath<VisualTreeAsset>("Packages/<name-of-the-package>/main_window.uxml");
StyleSheet uss = AssetDatabase.LoadAssetAtPath<StyleSheet>("Packages/<name-of-the-package>/main_styles.uss");

使用 Addressables

Addressables 系统提供工具和脚本来组织和打包应用程序内容,以及在运行时加载和释放资产的 API。

您可以将 UXML 和 USS 资产与 Addressable 系统一起使用。

有关如何在 Unity 中为任何资产设置 Addressables 的信息,请参阅 Addressables 入门

使用 Resources 文件夹

如果在项目中添加Resources文件夹并将 UI 资产放在其中,则可以使用Resources.Load方法加载资产。

以下示例显示了如何在Resources文件夹中加载资产

VisualTreeAsset uxml = Resources.Load<VisualTreeAsset>("main_window");
StyleSheet uss = Resources.Load<StyleSheet>("main_styles");

注意:此方法会显着增加最终构建大小。如果您担心构建大小,请改用 Addressables

从 UXML 引用其他文件
从 C# 脚本实例化 UXML