Unity는 UXML 파일을 C#에서 VisualTreeAsset
오브젝트로 나타내고 USS 파일을 C#에서 StyleSheet
오브젝트로 나타냅니다.VisualTreeAsset
및 StyleSheet
는 일반적인 Unity 에셋이므로 Unity의 일반 워크플로를 사용하여 로드할 수 있습니다.
Unity automatically detects fields from your C# scripts that are of type VisualTreeAsset
or StyleSheet
. You can use the Inspector to set references to specific UXML or USS files imported into your project. Such references remain valid even when the ___location of your assets changes in your project.
스크립트에서 이를 사용하는 세 가지 방법이 있습니다.
설명 | 인스펙터를 표시하는 방법 | 레퍼런스 저장 위치 |
---|---|---|
커스텀 스크립트의 인스턴스(예: MonoBehaviour ) |
스크립트의 인스턴스를 포함하는 게임 오브젝트 선택 | 씬 내부 |
EditorWindow 또는 Editor 에서 파생된 스크립트에 대한 기본 레퍼런스 |
프로젝트 브라우저에서 실제 C# 파일을 선택 | 스크립트와 연결된 메타 파일 내부 |
ScriptableObject 에서 파생된 프로젝트의 커스텀 에셋 |
프로젝트 브라우저에서 에셋을 선택 | 에셋 자체의 직렬화된 데이터 내부 |
Note: The default references work for all scripts that derive from MonoBehaviour
or ScriptableObject
. It provides a way to populate default values for serialized fields of scripts.
다음 예시 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 에셋을 로드할 수 있습니다.
다음 예시는 경로로 에셋을 찾는 방법을 나타냅니다.
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");
어드레서블 시스템은 애플리케이션의 콘텐츠를 구성하고 패키징하기 위한 툴과 스크립트를 제공하며 런타임 시 에셋을 로드하고 해제하는 API를 제공합니다.
어드레서블 시스템에서 UXML과 USS 에셋을 사용할 수 있습니다.
Unity에서 에셋에 대해 어드레서블을 설정하는 방법에 대한 자세한 내용은 어드레서블 시작하기를 참조하십시오.
프로젝트에 Resources
폴더를 추가하고 그 안에 UI 에셋을 넣으면, Resources.Load
메서드를 사용하여 에셋을 로드할 수 있습니다.
The following example shows how to load an asset in the Resources
folder:
VisualTreeAsset uxml = Resources.Load<VisualTreeAsset>("main_window");
StyleSheet uss = Resources.Load<StyleSheet>("main_styles");
참고:이 방법을 사용하면 최종 빌드 크기가 상당히 늘어납니다.빌드 크기가 걱정된다면 Addressables
를 대신 사용하십시오.