Unity 매뉴얼 스크립팅 API 가이드
이 문서는 Unity의 사용자 인터페이스(UI) 생성과 관련된 내용을 설명합니다. 특히 UXML과 USS 파일을 C# 스크립트와 함께 사용하는 방법을 다룹니다.
버전 정보
버전 | 상태 |
---|---|
2022.3 | 지원됨 |
2023.2 | 지원됨 |
2023.1 | 지원됨 |
... | ... |
2017.1 | 레거시 |
주요 개념
- UXML: UI 구조화에 사용되는 XML 형식.
- USS: UI 스타일링에 사용되는 스타일 시트 형식.
- VisualTreeAsset: UXML 파일을 나타내는 C# 오브젝트.
- StyleSheet: USS 파일을 나타내는 C# 오브젝트.
UXML 및 USS 파일 로드하기
Unity에서는 UXML 및 USS 파일을 C#에서 쉽게 로드할 수 있습니다.
직렬화된 필드 사용하기
C# 스크립트에서 UXML 및 USS 파일을 참조하려면 다음과 같이 필드를 선언할 수 있습니다.
클래스 | 코드 스니펫 |
---|---|
MonoBehaviour | csharp<br>public VisualTreeAsset mainUI;<br>public StyleSheet[] seasonalThemes; |
EditorWindow | csharp<br>[SerializeField]<br>private VisualTreeAsset uxml;<br>[SerializeField]<br>private StyleSheet uss; |
AssetDatabase 활용하기
에셋 데이터베이스를 사용하여 경로 또는 GUID를 통해 UI 에셋을 로드할 수 있습니다.
예시 | 코드 스니펫 |
---|---|
경로로 에셋 로드하기 | csharp<br>VisualTreeAsset uxml = AssetDatabase.LoadAssetAtPath<VisualTreeAsset>("Assets/Editor/main_window.uxml"); |
패키지에서 에셋 로드하기 | csharp<br>VisualTreeAsset uxml = AssetDatabase.LoadAssetAtPath<VisualTreeAsset>("Packages/<name-of-the-package>/main_window.uxml"); |
Addressables 사용하기
어드레서블 시스템을 통해 런타임 시 에셋을 효율적으로 로드하고 관리할 수 있습니다.
Resources 폴더 사용하기
UI 에셋을 프로젝트의 Resources 폴더에 추가한 후, Resources.Load
메서드를 사용하여 로드할 수 있습니다.
예시 | 코드 스니펫 |
---|---|
Resources 폴더에서 에셋 로드하기 | csharp<br>VisualTreeAsset uxml = Resources.Load<VisualTreeAsset>("main_window"); |
활용 예제
예제 1: UI 생성
다음은 MonoBehaviour를 사용하여 UI를 생성하는 간단한 예제입니다.
using UnityEngine;
using UnityEngine.UIElements;
public class MyUI : MonoBehaviour
{
public VisualTreeAsset mainUI;
void Start()
{
var ui = mainUI.CloneTree();
var panel = GetComponent<PanelSettings>();
panel.visualTreeAsset = ui;
}
}
예제 2: EditorWindow 활용
EditorWindow를 사용하여 UXML을 로드하는 예제입니다.
using UnityEditor;
using UnityEngine.UIElements;
public class MyWindow : EditorWindow
{
[SerializeField]
private VisualTreeAsset uxml;
void OnEnable()
{
var ui = uxml.CloneTree();
rootVisualElement.Add(ui);
}
}
결론
이 문서에서는 Unity에서 UXML과 USS 파일을 사용하는 기본적인 절차와 예제를 다루었습니다. 추가적인 활용을 위해 Unity의 공식 문서를 참조하는 것이 좋습니다.