Unity UI Toolkit과 UXML 사용하기
이 문서는 Unity에서 사용자 인터페이스(UI)를 구성하는 데 사용되는 UXML에 대한 설명입니다. UXML은 XML 기반의 형식으로, UI 요소를 구조화하고 재사용할 수 있는 강력한 방법을 제공합니다.
UXML 템플릿 생성
UXML 템플릿을 사용하면 UI의 특정 부분을 정의하고 이를 다른 UXML 파일에서 재사용할 수 있습니다. 이는 대규모 UI를 디자인할 때 유용합니다.
UXML 템플릿 예시
아래는 세로 UI 요소를 정의한 예시입니다.
<ui:UXML ...>
<ui:VisualElement class="portrait">
<ui:Image name="portaitImage" style="--unity-image: url(\"a.png\")"/>
<ui:Label name="nameLabel" text="Name"/>
<ui:Label name="levelLabel" text="42"/>
</ui:VisualElement>
</ui:UXML>
이 템플릿을 재사용하는 방법은 다음과 같습니다.
<ui:UXML ...>
<ui:Template src="/Assets/Portrait.uxml" name="Portrait"/>
<ui:VisualElement name="players">
<ui:Instance template="Portrait" name="player1"/>
<ui:Instance template="Portrait" name="player2"/>
</ui:VisualElement>
</ui:UXML>
속성 오버라이드
UXML 템플릿의 인스턴스를 만들 때 기본 속성 값을 오버라이드할 수 있습니다.
예시: 속성 오버라이드
<UXML xmlns="Unityui.UIElements">
<Label name="player-name-label" text="default name" />
<Label name="player-score-label" text="default score" />
</UXML>
다음은 두 플레이어의 이름과 점수를 표현하는 방법입니다.
<UXML xmlns="UnityEngine.UIElements" xmlns:uie="UnityEditor.UIElements">
<Template src="MyTemplate.uxml" name="MyTemplate" />
<Instance name="player1" template="MyTemplate">
<AttributeOverrides element-name="player-name-label" text="Alice" />
<AttributeOverrides element-name="player-score-label" text="2" />
</Instance>
<Instance name="player2" template="MyTemplate">
<AttributeOverrides element-name="player-name-label" text="Bob" />
<AttributeOverrides element-name="player-score-label" text="1" />
</Instance>
</UXML>
속성 오버라이드의 제한 사항
- 속성 오버라이드는 지정된 요소 이름에 따라 일치하는 속성을 찾습니다.
class
,name
또는style
속성을 오버라이드할 수 없습니다.
중첩 속성 오버라이드
중첩된 템플릿 간에도 속성 오버라이드가 전파될 수 있지만, 가장 깊은 오버라이드가 최종적으로 적용됩니다.
예시: 중첩 속성 오버라이드
<AttributeOverrides element-name="player-name-label" text="Alice" tooltip="Tooltip 1" />
다양한 활용 예제
UXML 템플릿의 기능
- 게임 플레이어 UI: 각 플레이어의 정보를 표시하는 UI를 생성할 수 있습니다.
- 다양한 UI 컴포넌트: 버튼, 레이블, 이미지 등을 조합하여 복잡한 UI를 만들 수 있습니다.
- 테마별 UI 디자인: 속성 오버라이드를 활용하여 다양한 테마의 UI를 생성할 수 있습니다.
UXML을 사용하면 개발자는 UI를 보다 쉽게 구성하고 재사용할 수 있으며, 이를 통해 프로토타입을 신속하게 개발하고 UI의 일관성을 유지할 수 있습니다.
추가 리소스
- Unity 공식 문서: Unity의 UI Toolkit 및 UXML에 대한 더 많은 정보가 포함되어 있습니다.
- 포럼 및 커뮤니티: Unity 사용자의 질문과 답변이 공유되는 공간입니다.
위 내용을 참고하여 Unity에서의 UI 구성 및 개발에 도움이 되기를 바랍니다.