Unity 在 C# 中将 UXML 文件表示为VisualTreeAsset
对象,并将 USS 文件表示为StyleSheet
对象。由于VisualTreeAsset
和StyleSheet
是常规的 Unity 资产,因此您可以使用 Unity 的标准工作流程来加载它们。
Unity 会自动检测来自 C# 脚本一段代码,允许您创建自己的组件、触发游戏事件、随着时间的推移修改组件属性并以任何您喜欢的方式响应用户输入。 更多信息
参见 术语表 中类型为VisualTreeAsset
或StyleSheet
的字段。您可以使用 检查器一个 Unity 窗口,显示有关当前选定的游戏对象、资产或项目设置的信息,允许您检查和编辑值。 更多信息
参见 术语表 设置对项目中导入的特定 UXML 或 USS 文件的引用。即使资产在项目中的位置发生变化,此类引用仍然有效。
在脚本中使用此功能有三种方法
描述 | 如何显示检查器 | 引用保存位置 |
---|---|---|
自定义脚本的实例(例如MonoBehaviour ) |
选择包含脚本实例的 游戏对象Unity 场景中的基本对象,可以表示角色、道具、场景、摄像机、路径点等等。游戏对象的功 能由附加到它的组件定义。 更多信息 参见 术语表 |
在 场景场景包含游戏环境和菜单。可以将每个唯一的场景文件视为一个唯一的关卡。在每个场景中,您放置环境、障碍物和装饰,从本质上讲是分段设计和构建您的游戏。 更多信息 参见 术语表 内部 |
从EditorWindow 或Editor 派生的脚本的默认引用 |
在项目浏览器中选择实际的 C# 文件 | 在与脚本关联的元数据文件内 |
项目中从ScriptableObject 派生的自定义资产 |
在项目浏览器中选择资产 | 在资产本身的序列化数据内 |
注意:默认引用适用于所有从MonoBehaviour
或ScriptableObject
派生的脚本。它提供了一种为脚本的序列化字段填充默认值的方法。
以下示例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;
}
您可以使用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 系统提供工具和脚本来组织和打包应用程序内容,以及在运行时加载和释放资产的 API。
您可以将 UXML 和 USS 资产与 Addressable 系统一起使用。
有关如何在 Unity 中为任何资产设置 Addressables 的信息,请参阅 Addressables 入门。
如果在项目中添加Resources
文件夹并将 UI 资产放在其中,则可以使用Resources.Load
方法加载资产。
以下示例显示了如何在Resources
文件夹中加载资产
VisualTreeAsset uxml = Resources.Load<VisualTreeAsset>("main_window");
StyleSheet uss = Resources.Load<StyleSheet>("main_styles");
注意:此方法会显着增加最终构建大小。如果您担心构建大小,请改用 Addressables
。