Unity は、UXML ファイルを C# で VisualTreeAsset オブジェクトとして表し、USS ファイルを C# で StyleSheet オブジェクトとして表します。VisualTreeAsset と StyleSheet は通常の Unity アセットであるため、Unity の標準ワークフローを使用してロードできます。
Unity は、C# スクリプトから、VisualTreeAsset または StyleSheet 型のフィールドを自動的に検出します。Inspector を使用して、プロジェクトにインポートされた特定の UXML ファイルまたは USS ファイルへの参照を設定できます。このような参照は、プロジェクト内でアセットの場所が変更されても有効です。
スクリプトでこれを使用する方法は 3 つあります。
| 説明 | Inspector の表示方法 | 参照の保存場所 |
|---|---|---|
カスタムスクリプトのインスタンス (MonoBehaviour など) |
スクリプトのインスタンスを持つゲームオブジェクトを選択 | シーン内 |
EditorWindow または Editor から派生したスクリプトのデフォルト参照 |
Project ウィンドウのブラウザーで実際の C# ファイルを選択 | スクリプトに関連付けられたメタファイル内 |
ScriptableObject から派生したカスタムアセット |
Project ウィンドウのブラウザーでアセットを選択 | アセットのシリアル化されたデータ内 |
ノート: デフォルト参照は、MonoBehaviour または ScriptableObject から派生したすべてのスクリプトで機能します。スクリプトのシリアル化されたフィールドにデフォルト値を入力する方法を提供します。
以下の 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;
}
UI アセットは、パスまたは GUID を 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 が用意されています。
Addressable システムで UXML と USS アセットを使用できます。
Unity のアセットに Addressables を設定する方法については、Addressables の使用開始 を参照してください。
プロジェクトに Resources フォルダーを追加し、そこに UI アセットを配置する場合、Resources.Load メソッドを使用してアセットをロードできます。
以下の例は、Resources フォルダーにアセットをロードする方法を示しています。
VisualTreeAsset uxml = Resources.Load<VisualTreeAsset>("main_window");
StyleSheet uss = Resources.Load<StyleSheet>("main_styles");
ノート: このメソッドは、最終的なビルドサイズを大幅に増やします。ビルドサイズに懸念がある場合は、代わりに Addressables を使用してください。