Unity에서는 UXML 파일을 VisualTreeAsset, USS 파일을 StyleSheet 객체로 표현합니다.
이들은 Unity 에셋이기 때문에 일반적인 에셋 로딩 방식(직렬화 참조, Resources.Load, Addressables, AssetDatabase)을 사용할 수 있습니다.
1. 🔗 직렬화 참조 사용 (Inspector에서 직접 할당)
✔ 사용하는 경우
- MonoBehaviour, ScriptableObject, EditorWindow 등의 클래스에서 사용 가능
- Unity Inspector에서 참조를 드래그하여 연결
✔ 예제
using UnityEngine;
using UnityEngine.UIElements;
public class MyBehaviour : MonoBehaviour
{
public VisualTreeAsset mainUI;
public StyleSheet[] seasonalThemes;
}
using UnityEditor;
using UnityEngine.UIElements;
public class MyWindow : EditorWindow
{
[SerializeField] private VisualTreeAsset uxml;
[SerializeField] private StyleSheet uss;
}
2. 📦 Resources 폴더 사용
런타임 로딩 가능, 하지만 빌드 크기 증가 주의
✔ 경로: Assets/Resources/
✔ 예제
VisualTreeAsset uxml = Resources.Load<VisualTreeAsset>("main_window");
StyleSheet uss = Resources.Load<StyleSheet>("main_styles");
3. 🎯 Addressables 사용
런타임 로딩 가능, 빌드 최적화 및 메모리 관리에 유리
✔ 예제
// 비동기 로드 (예시)
var handle = Addressables.LoadAssetAsync<VisualTreeAsset>("main_window");
handle.Completed += (op) =>
{
if (op.Status == AsyncOperationStatus.Succeeded)
{
VisualTreeAsset uxml = op.Result;
// 사용 가능
}
};
4. 🛠️ AssetDatabase 사용 (에디터 전용)
에디터 도구 제작 시 사용
✔ 예제
using UnityEditor;
using UnityEngine.UIElements;
VisualTreeAsset uxml = AssetDatabase.LoadAssetAtPath<VisualTreeAsset>("Assets/Editor/main_window.uxml");
StyleSheet uss = AssetDatabase.LoadAssetAtPath<StyleSheet>("Assets/Editor/main_styles.uss");
'Unity > UI ToolKit' 카테고리의 다른 글
C# 스크립트를 사용하여 UI 구조화 (0) | 2025.05.11 |
---|---|
UQuery로 시각적 요소 찾기 (0) | 2025.05.11 |
순서변경 (0) | 2025.05.11 |