UXML 포맷은 HTML, XAML, XML에서 영감을 받아 만들어졌습니다.이전에 이러한 포맷을 작업해 본 적이 있다면 UXML과의 유사점을 알 수 있습니다.그러나 UXML 포맷에는 Unity를 사용한 작업에 효과적인 방법을 제공하는 작은 차이점이 있습니다.이 페이지에서는 예시를 통해 UXML 포맷에 대해 소개합니다.
다음은 UXML 파일의 예시입니다.여기에는 사용자가 선택하도록 메시지를 표시하는 빌트인 UI 컨트롤이 포함되어 있습니다.
<?xml version="1.0" encoding="utf-8"?>
<UXML ...>
<Box>
<Toggle name="boots" label="Boots" value="false" />
<Toggle name="helmet" label="Helmet" value="false" />
<Toggle name="cloak" label="Cloak of invisibility" value="false"/>
</Box>
<Box>
<Button name="cancel" text="Cancel" />
<Button name="ok" text="OK" />
</Box>
</UXML>
위의 UXML 예시에서 첫 번째 코드줄은 UXML 선언입니다.선언은 선택 사항입니다.UXML 선언을 포함할 경우 첫 번째 줄에 넣어야 합니다.UXML 선언에는 version
이 필요합니다.UXML 선언에서 encoding
속성은 선택 사항입니다.encoding
속성을 포함할 경우 파일의 문자 인코딩을 선언해야 합니다.
다음 줄에는 문서 루트 <UXML>
을 정의합니다.<UXML>
요소에는 네임스페이스 접두사 정의와 스키마 정의 파일의 위치에 대한 속성이 포함됩니다.이러한 속성을 원하는 순서대로 지정할 수 있습니다.
UI 툴킷에서 각 요소는 UnityEngine.UIElements
또는 UnityEditor.UIElements
네임스페이스 중 하나로 정의됩니다.
UnityEngine.UIElements
네임스페이스에는 Unity 런타임의 일부로 정의되는 요소가 포함됩니다.UnityEditor.UIElements
네임스페이스에는 Unity 에디터에서 이용 가능한 요소가 포함됩니다. 요소를 완전히 지정하려면 네임스페이스를 접두사로 사용해야 합니다.예를 들어 UXML 템플릿에서 Button
요소를 사용하려면 <UnityEngine.UIElements:Button />
을 지정해야 합니다.
네임스페이스를 더 쉽게 지정하기 위해 네임스페이스 접두사를 정의할 수 있습니다.예를 들어 xmlns:engine="UnityEngine.UIElements"
는 engine
접두사를 UnityEngine.UIElements
로 정의합니다.네임스페이스 접두사를 정의하면 이를 사용하여 네임스페이스를 지정할 수 있습니다.예를 들어 <engine:Button />
는 <UnityEngine.UIElements:Button />
와 동등합니다.
또한 접두사를 제외하여 기본 네임스페이스를 정의할 수도 있습니다.예를 들어 xmlns="UnityEngine.UIElements"
는 UnityEngine.UIElements
를 기본 네임스페이스로 정의합니다.즉, <Button />
를 지정하면 <UnityEngine.UIElements:Button />
와 동등합니다.
자동으로 정의된 네임스페이스가 있는 UXML 파일을 생성하려면 Assets > Create > UI Toolkit > UI Document를 선택합니다.
참고:자체 요소를 정의하는 경우 UnityEngine.UIElements
또는 UnityEditor.UIElements
네임스페이스에 커스텀 컨트롤 클래스를 정의하지 마십시오.그렇지 않으면 UI 빌더에서 커스텀 컨트롤이 숨겨집니다.
스키마 정의는 UXML 파일을 확인합니다.이는 각 UXML 요소에 포함할 수 있는 속성 및 자식 요소를 지정합니다.
UXML 파일에서 <UXML>
루트 요소의 xsi:noNamespaceSchemaLocation
또는 xsi:schemaLocation
속성은 스키마 정의 파일의 위치를 지정합니다.
최신 스키마 정의가 있는 UXML 파일을 생성하려면 Assets > Create > UI Toolkit > UI Document를 선택합니다.이렇게 하면 루트 요소의 xsi:noNamespaceSchemaLocation
속성이 포함된 파일이 생성됩니다.
참고:텍스트 에디터가 xsi:noNamespaceSchemaLocation
속성을 인식하지 않는 경우, xsi:schemaLocation
속성을 대신 사용합니다.
UXML 스키마 정의의 업데이트를 강제 적용하려면 Assets > Update UXML Schema를 선택합니다.
UI의 정의는 <UXML>
루트 안에 있습니다.UI 정의는 일련의 중첩된 UXML 요소이며 각 요소는 시각적 요소를 나타냅니다.
요소 이름은 인스턴스화할 요소의 C# 클래스명에 해당합니다.대부분의 요소에는 속성이 있으며 해당 값은 C#에서 해당 클래스 프로퍼티에 매핑됩니다.각 요소에는 부모 클래스의 상속된 속성 외에도 자체 속성 세트가 있습니다.VisualElement
는 모든 요소에 대한 기본 클래스이며 모든 요소에 대해 다음 속성을 제공합니다.
name
:요소에 대한 식별자입니다.이름은 고유해야 합니다.picking-mode
:Position
으로 설정하여 마우스 이벤트에 응답하거나 Ignore
로 설정하여 마우스 이벤트를 무시합니다.focus-index
:(사용되지 않음) tabIndex
와 focusable
을 사용합니다.tabindex
:현재 요소의 태빙 포지션을 정의하는 정수입니다.focusable
:요소에 포커스를 둘 수 있는지를 나타내는 부울입니다.class
:요소를 특성화하는 식별자 목록으로, 공백으로 구분됩니다.클래스를 사용하여 요소에 시각적 스타일을 할당합니다.클래스를 사용하여 Uquery에서 요소 세트를 선택할 수도 있습니다.tooltip
:마우스 커서가 요소 위에 있을 때 툴팁으로 표시되는 문자열입니다.view-data-key
:요소 직렬화에 사용되는 키를 정의하는 문자열입니다.