Unity 매뉴얼: UXML 태그 이름 및 속성 커스터마이즈
이 문서에서는 Unity에서 UXML 태그 이름과 속성을 커스터마이즈하는 방법에 대해 설명합니다. 이를 통해 사용자는 자신의 커스텀 컨트롤을 더욱 효율적으로 정의하고 사용자가 필요로 하는 UI 요소를 쉽게 조작할 수 있습니다.
기본 개념
UXML에서 태그 이름은 기본적으로 C# 클래스명입니다. 하지만 이름이 충돌할 경우, 커스터마이즈가 필요합니다. 태그 이름을 커스터마이즈하려면 두 개의 프로퍼티를 오버라이드해야 합니다:
uxmlName
: 네임스페이스에서 고유해야 함uxmlQualifiedName
: 프로젝트에서 고유해야 함
이름이 고유하지 않다면 Unity는 예외를 발생시킵니다.
예제: UXML 태그 이름 커스터마이즈
public class FactoryWithCustomName : UxmlFactory<..., ...>
{
public override string uxmlName
{
get { return "UniqueName"; }
}
public override string uxmlQualifiedName
{
get { return uxmlNamespace + "." + uxmlName; }
}
}
요소에 대한 팩토리 선택
기본적으로 IUxmlFactory
는 요소를 인스턴스화하고, 요소 이름을 사용하여 선택합니다. 선택 요소에 대한 속성값을 고려하려면 IUXmlFactory.AcceptsAttributeBag()
메서드를 오버라이드해야 합니다.
public override bool AcceptsAttributeBag(IUxmlAttributes bag)
{
// 속성 검증 로직
}
값 검사
VisualElement 시작 시, 팩토리는 요소 속성을 검사하여 인스턴스화 가능 여부를 결정합니다. 두 개 이상의 팩토리가 요소를 인스턴스화할 수 있는 경우, 먼저 등록된 팩토리가 선택됩니다.
기본 클래스 속성의 기본값 오버라이드
기본 속성의 값을 변경하려면 파생된 UxmlTraits
클래스를 생성하고, defaultValue
를 설정합니다.
예시:
class MyElementTraits : VisualElement.UxmlTraits
{
public MyElementTraits()
{
m_TabIndex.defaultValue = 0;
}
}
허용 속성 제한
기본적으로 생성된 UXML 스키마는 요소가 모든 속성을 가질 수 있도록 명시합니다. 특정 속성으로 제한하려면 UxmlTraits
생성자에서 canHaveAnyAttribute
속성을 false
로 설정합니다.
public MyElementTraits()
{
canHaveAnyAttribute = false;
}
추가 리소스
결론
UXML과 UI 툴킷을 사용하면 Unity에서 사용자 인터페이스(UI)를 보다 효과적으로 관리할 수 있습니다. 위에서 설명한 방법으로 커스텀 컨트롤을 정의하고 관리하면 UI 개발 속도를 높일 수 있습니다.