Unity 사용자 매뉴얼 2022.3 (LTS): 사용자 인터페이스(UI) 생성
이 문서는 Unity의 UI 도구와 요소들을 설명하고, UXML을 사용하여 UI를 구조화하는 방법을 안내합니다.
1. UI 툴킷
Unity의 UI 툴킷을 사용하면 보다 효율적으로 사용자 인터페이스를 생성할 수 있습니다. UI 요소들은 UXML을 통해 정의될 수 있으며, 스타일은 USS를 통해 적용됩니다.
1.1 UXML 요소
UXML은 Unity에서 UI 요소를 정의하기 위해 사용되는 XML 기반의 마크업 언어입니다. 다양한 요소들이 존재하며, 그 중 몇 가지를 살펴보겠습니다.
CurveField
- C# 클래스: CurveField
- 네임스페이스: UnityEditor.UIElements
- 상속: BaseField
주요 속성
속성 이름 | 타입 | 설명 |
---|---|---|
binding-path | string | 바인딩할 타겟 프로퍼티의 경로입니다. |
focusable | boolean | 포커스를 맞출 수 있는지 여부 (true/false). |
label | string | 필드 옆에 표시될 레이블을 나타냅니다. |
tabindex | int | 포커스 링에서의 정렬을 위한 정수입니다. |
1.2 ColorField
- C# 클래스: ColorField
- 네임스페이스: UnityEditor.UIElements
- 상속: BaseField
주요 속성
속성 이름 | 타입 | 설명 |
---|---|---|
binding-path | string | 바인딩할 타겟 프로퍼티의 경로입니다. |
focusable | boolean | 포커스를 맞출 수 있는지 여부 (true/false). |
label | string | 필드 옆에 표시될 레이블을 나타냅니다. |
1.3 DoubleField
- C# 클래스: DoubleField
- 네임스페이스: UnityEditor.UIElements
- 상속: BaseField
주요 속성
속성 이름 | 타입 | 설명 |
---|---|---|
binding-path | string | 바인딩할 타겟 프로퍼티의 경로입니다. |
focusable | boolean | 포커스를 맞출 수 있는지 여부 (true/false). |
label | string | 필드 옆에 표시될 레이블을 나타냅니다. |
2. USS 클래스
Unity는 CSS와 유사한 형태의 스타일 시스템인 USS를 제공합니다. 아래의 표는 CurveField, ColorField, DoubleField와 관련된 USS 클래스와 그 설명을 나열합니다.
C# 프로퍼티 | USS 선택자 | 설명 |
---|---|---|
ussClassName | .unity-curve-field | CurveField 요소의 USS 클래스명입니다. |
label | .unity-curve-field__label | CurveField의 레이블 USS 클래스명입니다. |
input | .unity-curve-field__input | CurveField 입력 요소의 USS 클래스명입니다. |
content | .unity-curve-field__content | CurveField 콘텐츠 요소의 USS 클래스명입니다. |
border | .unity-curve-field__border | CurveField 테두리 요소의 USS 클래스명입니다. |
3. 활용 및 응용 예제
- UI 패널 생성: UXML을 사용해 기본 UI 패널을 생성하고, 다양한 UI 요소를 배치하는 방법을 활용할 수 있습니다.
- UI 이벤트 핸들링: C# 스크립트를 통해 UI 요소에 대한 이벤트(클릭, 포커스 등)를 처리할 수 있습니다.
3.1 코드 예제
UI 요소를 생성하고 이벤트를 핸들링하는 간단한 C# 코드 예제입니다.
using UnityEngine;
using UnityEngine.UIElements;
public class MyUI : MonoBehaviour
{
private void Start()
{
var uiDocument = GetComponent<UIDocument>();
var root = uiDocument.rootVisualElement;
var button = new Button() { text = "Click Me!" };
button.RegisterCallback<ClickEvent>(ev => Debug.Log("Button Clicked!"));
root.Add(button);
}
}
이 가이드를 활용하여 Unity에서 사용자 인터페이스를 디자인하고 구현하는 데 도움이 되기를 바랍니다. 추가적으로 다양한 UI 요소와 속성에 대한 이해를 깊이 있는 연구와 개발을 통해 확장하시기 바랍니다.