Unity3D :加载 UXML 和 USS C# 脚本

推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生

加载 UXML 和 USS C# 脚本

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

使用序列化引用

Unity 会自动检测 C# 中的字段脚本
类型为 或 。您可以使用VisualTreeAssetStyleSheet检查员
以设置对项目中导入的特定 UXML 或 USS 文件的引用。即使资源在项目中的位置发生更改,此类引用仍然有效。

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

描述如何显示检查器引用保存位置
自定义脚本的实例(例如MonoBehaviour)选择游戏对象保存脚本的实例里面现场
派生自 或 的脚本的默认引用EditorWindowEditor在项目浏览器中选择实际的 C# 文件在与脚本关联的元文件中
项目中派生自的自定义资源ScriptableObject在项目浏览器中选择资源在资产本身的序列化数据内部

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

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

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;
}

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

您可以加载您的用户界面
具有资产数据库类的路径或 GUID 资产。

以下示例演示如何按路径查找资产:

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 中的任何资源设置可寻址对象的信息,请参阅可寻址对象入门。

使用资源文件夹

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

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

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

3D建模学习工作室整理翻译,转载请注明出处!

上一篇:Unity3D :从UXML引用其他文件 (mvrlink.com)

下一篇:Unity3D :从 C# 脚本实例化 UXML (mvrlink.com)

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