Unity/UI ToolKit

UXML 및 USS C# 스크립트 로드 방법

소나무꼴 2025. 5. 11. 21:57

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