Unity 사용자 매뉴얼: 커스텀 컨트롤 만들기

이 문서는 Unity에서 커스텀 UI 컨트롤을 만드는 방법에 대한 안내입니다. UI 툴킷을 활용하여 UXML 파일을 통해 커스텀 요소를 정의하고 사용할 수 있습니다.

UXML 및 UI 빌더에 커스텀 컨트롤 노출

UXML 및 UI 빌더에서 커스텀 컨트롤을 사용하려면 해당 컨트롤을 노출시키는 과정이 필요합니다.

1. 팩토리 정의

새로운 요소를 정의하기 위해 VisualElement 또는 하위 클래스를 파생하여 새 클래스를 생성합니다. 이 클래스는 기본 생성자를 반드시 구현해야 합니다.

예제:

class StatusBar : VisualElement
{
    public StatusBar()
    {
        m_Status = String.Empty;
    }

    string m_Status;
    public string status { get; set; }
}

2. 팩토리 클래스 정의

UI 툴킷이 UXML 파일을 읽을 때 새 클래스를 인스턴스화하려면 클래스에 대한 팩토리를 정의해야 합니다. 특별한 작업 없이 사용할 경우 UxmlFactory<T>에서 파생할 수 있습니다.

예제:

class StatusBar : VisualElement
{
    public new class UxmlFactory : UxmlFactory<StatusBar> {}

    // ...
}

이 팩토리를 정의한 후, UXML 파일에서 <StatusBar> 요소를 사용할 수 있습니다.

3. 속성 정의

새로운 클래스에 대해 UXML 특성을 정의하고 해당 팩토리가 그러한 특성을 사용하도록 설정할 수 있습니다.

예제:

class StatusBar : VisualElement
{
    public new class UxmlFactory : UxmlFactory<StatusBar, UxmlTraits> {}

    public new class UxmlTraits : VisualElement.UxmlTraits
    {
        UxmlStringAttributeDescription m_Status = new UxmlStringAttributeDescription { name = "status" };

        public override IEnumerable<UxmlChildElementDescription> uxmlChildElementsDescription
        {
            get { yield break; }
        }

        public override void Init(VisualElement ve, IUxmlAttributes bag, CreationContext cc)
        {
            base.Init(ve, bag, cc);
            ((StatusBar)ve).status = m_Status.GetValueFromBag(bag, cc);
        }
    }

    // ...
}

UxmlTraits 역할

  • 팩토리가 새로 생성된 오브젝트를 초기화하는 데 사용됩니다.
  • XML 스키마 지시문으로 변환하기 위해 요소에 대한 정보를 분석합니다.

속성 타입 지원

UI 툴킷은 다양한 타입의 속성을 지원하며, 각 속성은 C# 타입을 UXML 타입에 연결합니다.

속성 타입 설명
UxmlStringAttributeDescription 문자열
UxmlFloatAttributeDescription 단일 정밀도 부동 소수점 값
UxmlDoubleAttributeDescription 이중 정밀도 부동 소수점 값
UxmlIntAttributeDescription 정수 값
UxmlLongAttributeDescription 긴 정수 값
UxmlBoolAttributeDescription true 또는 false
UxmlColorAttributeDescription USS 포맷으로 정의된 컬러 문자열
UxmlEnumAttributeDescription Enum 타입 T에 대한 값 중 하나
UxmlTypeAttributeDescription 타입의 어셈블리 자격 이름 문자열

네임스페이스 접두사 정의

새 요소를 정의하고 나면 UXML 파일에서 해당 요소를 사용할 수 있습니다. 새로운 네임스페이스를 정의하면 접두사를 설정할 수 있습니다.

예제:

[assembly: UxmlNamespacePrefix("My.First.Namespace", "first")]
[assembly: UxmlNamespacePrefix("My.Second.Namespace", "second")]

추가 리소스

  • 커스텀 컨트롤 만들기
  • 두 가지 속성을 가진 커스텀 컨트롤 만들기
  • 슬라이드 토글 커스텀 컨트롤 만들기
  • 방사형 진행률 표시기 만들기
  • 바인딩 가능한 커스텀 컨트롤 만들기
  • 커스텀 컨트롤에 대한 커스텀 스타일 만들기

참고

본 내용은 Unity Technologies의 지침을 토대로 작성되었습니다. 더욱 자세한 사항은 Unity의 공식 문서를 참조하시기 바랍니다.

Read more

Unity 매뉴얼 스크립팅 API 해설

이 문서는 Unity의 매뉴얼 스크립팅 API에 대한 간단한 해설과 활용 예제들을 포함하고 있습니다. Unity는 게임 개발 플랫폼으로, 스크립팅 API를 통해 게임의 다양한 기능을 제어하고 수정할 수 있습니다. 버전 Unity 스크립팅 API는 여러 버전으로 제공됩니다. 주의 깊게 선택하여 사용하는 것이 중요합니다. 버전 설명 2023.2 최신 기능 및 버그 수정이 추가됨

By 이재협/실장/시스템개발실/PHYSIA

Unity 매뉴얼 스크립팅 API 설명서 해설

이 문서는 Unity의 매뉴얼 스크립팅 API에 대한 정보를 제공하며, 버전에 따라 다르게 적용되는 내용들을 설명합니다. 본 문서에서는 주요 내용을 간단히 정리하고 활용 가능 예제를 통해 이해를 돕겠습니다. 기본 개념 Unity에서 스크립팅 API는 게임 오브젝트와 그들의 동작을 제어하기 위한 강력한 도구입니다. 이를 통해 게임의 로직, 물리 엔진, 애니메이션 및 사용자 인터페이스를

By 이재협/실장/시스템개발실/PHYSIA

Unity 스크립팅 API 가이드

이 문서는 Unity의 스크립팅 API에 대해 설명합니다. Unity는 게임 개발을 위한 인기 있는 엔진으로, 강력한 스크립팅 기능을 제공합니다. 이 가이드는 Unity에서 스크립트를 작성하고 사용하는 방법을 이해하는 데 도움을 드립니다. 목차 * Unity 스크립팅 소개 * 기본 스크립트 생성 * 스크립트 사용 예제 * 응용 프로그램 * 참고 자료 Unity 스크립팅 소개 Unity는 C# 프로그래밍 언어를

By 이재협/실장/시스템개발실/PHYSIA