Version: 6000.3
语言: 中文
从UXML引用其他文件
从 C# 脚本实例化 UXML

加载 UXML 和 USS C# 脚本

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

使用序列化引用

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

在脚本中使用它的方法有三种:

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

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

以下示例MonoBehaviour类从 Inspector 接收 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类从 Inspector 接收默认引用:

using UnityEditor;
using UnityEngine.UIElements;

public class MyWindow : EditorWindow
{
  [SerializeField]
  private VisualTreeAsset uxml;
  [SerializeField]
  private StyleSheet uss;
}
“检查器”窗口显示三个引用字段:查看数据字典、Uxml 和 USS
“检查器”窗口显示三个引用字段:查看数据字典、Uxml 和 USS

使用资产数据库(仅限编辑器)

你可以按路径或 GUID 加载 UI 资产,并使用AssetDatabase类。

以下示例演示如何按路径定位资产:

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系统提供了用于组织和打包应用程序内容的工具和脚本,以及用于在运行时加载和释放资产的API。

你可以将UXML和USS资产与可寻址系统一起使用。

有关如何为 Unity 中的任何资产设置可寻址对象的信息,请参阅可寻址对象入门

使用“资源”文件夹

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

以下示例演示如何在Resources文件夹:

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

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

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