Version: 2023.2
언어: 한국어
UXML 요소 ToolbarToggle
UXML 요소 TwoPaneSplitView

UXML 요소 TreeView

TreeView를 사용하여 트리와 같은 구조에서 계층 구조 데이터를 표시할 수 있습니다. 부모-자식 관계 또는 중첩된 구조로 데이터를 표시하는 데 일반적으로 사용되는 강력하고 유연한 컨트롤입니다.

TreeView 생성

UI Builder, UXML, C#으로 TreeView를 생성할 수 있습니다. 다음 C# 예시에서는 TreeView를 생성합니다.

var treeView = new TreeView();

컬렉션 뷰 새로 고침

일반적으로 컬렉션 뷰를 새로 고치려면 RefreshItems 또는 RefreshItem 메서드를 호출합니다. 하지만 다음과 같은 경우 Rebuild를 호출하여 컬렉션 뷰를 새로 고쳐야 합니다.

  • List<float>List<Vector3>로 변경하는 등 데이터 소스의 타입을 변경합니다.
  • makeItem 또는 destroyItem을 변경합니다.

참고: Rebuild를 호출하면 컬렉션 뷰가 완전히 다시 빌드되므로 비용이 많이 들 수 있습니다. RefreshItems 또는 RefreshItem을 호출하면 컬렉션 뷰만 새로 고쳐지므로 비용이 적게 듭니다.

데이터에 TreeView 바인딩

TreeView를 데이터 소스에 바인딩할 수 있습니다. 데이터 소스는 오브젝트 목록이나 문자열 목록이 될 수 있습니다.

다음 예시에서는 TreeView를 커스텀 타입에 바인딩합니다.

treeView.makeItem = () => new VisualElement();
treeView.bindItem = (i) =>
{
    var c = treeView.GetItemDataForIndex<MyCustomType>(i);
};

참고: 위 예시에서는 TreeView.bindItem이 인덱스를 수신합니다. ID가 아닌 인덱스를 GetItemDataForIndex<T>와 함께 사용해야 합니다.

TreeView를 위한 드래그 앤 드롭 작업 구현

드래그 앤 드롭은 UI 디자인에서 일반적인 기능입니다. 드래그 앤 드롭 작업을 구현하려면 다음 메서드를 오버라이드합니다.

  • 항목 드래그를 활성화하려면 canStartDrag를 오버라이드합니다.
  • 드래그할 항목을 설정하려면 setupDragAndDrop을 오버라이드합니다.
  • 항목 상태 변경 사항을 가져오려면 dragAndDropUpdate를 오버라이드합니다. 드래그 위치나 기타 상태를 기반으로 특정 작업을 수행할 수 있습니다.
  • 드래그 앤 드롭 동작을 관리하려면 handleDrop을 오버라이드합니다.

드래그 앤 드롭 작업 중에는 드래그를 통해 항목 순서를 변경할 수 있습니다. 이를 활성화하려면 reorderable 속성을 UI 빌더, UXML, C#에서 true로 설정합니다.

예시는 여러 창 간에 드래그 앤 드롭 목록과 트리 뷰 생성을 참조하십시오.

예제

다음 UXML 예시에서는 TreeView를 생성합니다.

[!code-xml[(External/Resources/editor_resources/Assets/Editor Default Resources/UIPackageResources/Snippets/UXML/TreeViewSnippet.uxml)]

다음 C# 예시에서는 커스터마이즈 가능한 일부 TreeView 기능을 보여 줍니다.

[!code-cs[(Modules/UIElementsSamplesEditor/Snippets/TreeViewSnippet.cs#sample)]

이 예시를 Unity에서 실험해 보려면 Window > UI Toolkit > Samples로 이동합니다. ​ 추가 예시는 다음을 참조하십시오.

C# 기본 클래스 및 네임스페이스

C# 클래스:TreeView
네임스페이스:UnityEngine.UIElements
기본 클래스:BaseTreeView

구성원 UXML 속성

이 요소에는 다음 구성원 속성이 있습니다.

Name 타입 설명
item-template UIElements.VisualTreeAsset 트리 내의 각 재활용 및 리바운드 요소를 구성하는 UXML 템플릿입니다. 이 템플릿은 makeItem 정의를 대체하도록 설계되었습니다.

상속 UXML 속성

이 요소는 다음 속성을 해당 기본 클래스에서 상속합니다.

Name 타입 설명
auto-expand boolean true인 경우 항목이 TreeView에 추가되면 자동으로 확장됩니다.
binding-path string 바인드될 타겟 프로퍼티의 경로입니다.
fixed-item-height float 리스트에 있는 단일 항목의 높이(픽셀)입니다.

컬렉션 뷰를 작동하려면 virtualizationMethodFixedHeight로 설정된 경우 이 프로퍼티를 설정해야 합니다.virtualizationMethodDynamicHeight일 때 설정하면 항목이 배치되기 전에 필요한 항목 수와 스크롤 가능한 영역을 계산하는 데 도움이 되는 기본 높이로 사용됩니다.항목의 예상 최소 높이로 설정해야 합니다.
focusable boolean 요소에 포커스를 맞출 수 있으면 true입니다.
reorderable boolean 사용자가 리스트 항목을 드래그하여 재정렬할 수 있는지를 나타내는 값을 가져오거나 설정합니다.

기본값은 false로, canStartDrag, setupDragAndDrop, dragAndDropUpdate, handleDrop을 구현할 때 사용자가 다른 뷰로 드래그하거나 다른 뷰에서 드래그할 수 있습니다.이 값을 true로 설정하면 사용자가 리스트의 항목을 재정렬할 수 있습니다.
selection-type UIElements.SelectionType 선택 타입을 컨트롤합니다.

기본값은 SelectionType.Single입니다.컬렉션 뷰를 설정하여 선택을 비활성화하면 모든 현재 선택이 해제됩니다.
show-alternating-row-backgrounds UIElements.AlternatingRowBackground 이 프로퍼티는 컬렉션 뷰 행의 배경 컬러를 번갈아 바꿀지를 컨트롤합니다.AlternatingRowBackground 열거형에서 값을 가져옵니다.
show-border boolean 컬렉션 뷰의 테두리를 표시하려면 이 프로퍼티를 활성화합니다.

true로 설정하면 컬렉션 뷰가 내부적으로 사용하는 ScrollView 주위에 테두리가 표시됩니다.
tabindex int 포커스 링에서 포커스를 맞출 수 있는 항목을 정렬하는 데 사용되는 정수입니다.0보다 크거나 같아야 합니다.
virtualization-method UIElements.CollectionVirtualizationMethod 스크롤 바가 표시될 때 이 컬렉션에 사용할 가상화 메서드입니다.CollectionVirtualizationMethod 열거형에서 값을 가져옵니다.

기본값은 FixedHeight입니다.고정 높이를 사용하는 경우 fixedItemHeight 프로퍼티를 지정합니다.고정 높이는 성능이 더 좋지만, 콘텐츠에 대한 유연성이 떨어집니다.DynamicHeight를 사용하면 컬렉션은 실제 높이가 계산될 때까지 기다립니다.동적 높이는 더 유연하지만, 성능이 떨어집니다.

또한 이 요소는 다음 속성을 VisualElement에서 상속합니다.

Name 타입 설명
content-container string 자식 요소가 추가되며, 일반적으로 요소 자체와 동일합니다.
data-source Object 상속된 모든 데이터 소스를 오버라이드하는 이 VisualElement에 데이터 소스를 할당합니다. 이 데이터 소스는 모든 자식에게 상속됩니다.
data-source-path string 데이터 소스에서 값까지의 경로입니다.
name string 이 VisualElement의 이름입니다.

이 프로퍼티를 사용하면 특정 요소를 타게팅하는 USS 선택자를 작성할 수 있습니다.요소에 고유한 이름을 부여하는 것이 표준 관행입니다.
picking-mode UIElements.PickingMode mouseEvents 또는 IPanel.Pick 쿼리 중에 이 요소를 선택할 수 있는지를 결정합니다.
style string 이 요소의 스타일 오브젝트에 대한 레퍼런스입니다.

USS 파일에서 계산된 데이터 또는 C#에서 이 오브젝트에 작성된 인라인 스타일을 포함합니다.
tooltip string 사용자가 마우스를 요소 위에 잠시 놓은 후 정보 박스 안에 표시할 텍스트입니다.이는 에디터 UI에서만 지원됩니다.
usage-hints UIElements.UsageHints VisualElement에 대한 고수준의 의도된 사용 패턴을 지정하는 힌트 값 조합입니다.이 프로퍼티는 VisualElement가 아직 Panel에 포함되어 있지 않을 때만 설정할 수 있습니다.Panel에 포함되면 이 프로퍼티는 사실상 읽기 전용이 되며, 변경을 시도하면 예외가 발생합니다.적절한 UsageHints를 지정하면 시스템에서 예상하는 사용 패턴에 따라 특정 작업을 처리하거나 가속하는 방법에 대해 더 나은 결정을 내릴 수 있습니다.이러한 힌트는 동작이나 시각적 결과에는 영향을 주지 않으며 패널과 그 안의 요소의 전반적인 성능에만 영향을 줍니다.항상 적절한 UsageHints를 지정하는 것이 좋지만, 일부 UsageHints는 특정 조건(예: 타겟 플랫폼의 하드웨어 제한으로 인해)에서 내부적으로 무시될 수 있다는 점에 유의하십시오.
view-data-key string 트리 확장 상태, 스크롤 위치, 줌 레벨 등의 데이터 지속성을 확인하는 데 사용됩니다.

이 키는 뷰 데이터 스토어에서 뷰 데이터를 저장 및 로드하는 데 사용됩니다. 이 키를 설정하지 않은 경우 관련 VisualElement에 대해 지속성이 비활성화됩니다. 자세한 내용은 데이터 지속성 확인을 참조하십시오.

USS 클래스

다음 표는 모든 C# 공용 프로퍼티 이름과 관련 USS 선택자의 리스트입니다.

C# 프로퍼티 USS 선택자 설명
ussClassName .unity-tree-view TreeView 요소의 USS 클래스명입니다.

Unity는 이 USS 클래스를 TreeView 요소의 모든 인스턴스에 추가합니다.이 클래스에 적용된 모든 스타일링은 시각적 트리의 스타일시트 옆이나 아래에 있는 모든 TreeView에 영향을 줍니다.
itemUssClassName .unity-tree-view__item TreeView 항목 요소의 USS 클래스명입니다.

Unity는 TreeView에 있는 모든 항목 요소에 이 USS 클래스를 추가합니다.이 클래스에 적용된 모든 스타일링은 시각적 트리의 스타일시트 옆이나 아래에 있는 모든 항목에 영향을 줍니다.
itemToggleUssClassName .unity-tree-view__item-toggle TreeView 항목 토글 요소의 USS 클래스명입니다.

Unity는 TreeView의 모든 항목 토글 요소에 이 USS 클래스를 추가합니다.이 클래스에 적용된 모든 스타일링은 시각적 트리의 스타일시트 옆이나 아래에 있는 모든 항목에 영향을 줍니다.
itemIndentsContainerUssClassName .unity-tree-view__item-indents TreeView 인덴트 컨테이너 요소의 USS 클래스명입니다.

Unity는 TreeView의 모든 인덴트 컨테이너 요소에 이 USS 클래스를 추가합니다.이 클래스에 적용된 모든 스타일링은 시각적 트리의 스타일시트 옆이나 아래에 있는 모든 항목에 영향을 줍니다.
itemIndentUssClassName .unity-tree-view__item-indent TreeView 인덴트 요소의 USS 클래스명입니다.

Unity는 TreeView의 모든 인덴트 요소에 이 USS 클래스를 추가합니다.이 클래스에 적용된 모든 스타일링은 시각적 트리의 스타일시트 옆이나 아래에 있는 모든 항목에 영향을 줍니다.
itemContentContainerUssClassName .unity-tree-view__item-content TreeView 항목 컨테이너 요소의 USS 클래스명입니다.

Unity는 TreeView의 모든 항목 컨테이너 요소에 이 USS 클래스를 추가합니다.이 클래스에 적용된 모든 스타일링은 시각적 트리의 스타일시트 옆이나 아래에 있는 모든 항목에 영향을 줍니다.
ussClassName .unity-collection-view BaseVerticalCollectionView 요소의 USS 클래스명입니다.

Unity는 이 USS 클래스를 BaseVerticalCollectionView 요소의 모든 인스턴스에 추가합니다.이 클래스에 적용된 모든 스타일링은 시각적 트리의 스타일시트 옆이나 아래에 있는 모든 BaseVerticalCollectionView에 영향을 줍니다.
borderUssClassName .unity-collection-view--with-border 테두리가 있는 BaseVerticalCollectionView 요소의 USS 클래스명입니다.

Unity는 인스턴스의 BaseVerticalCollectionView.showBorder 프로퍼티가 true로 설정된 경우 BaseVerticalCollectionView 요소의 인스턴스에 이 USS 클래스를 추가합니다.이 클래스에 적용된 모든 스타일링은 시각적 트리의 스타일시트 옆이나 아래에 있는 이러한 모든 BaseVerticalCollectionView에 영향을 줍니다.
itemUssClassName .unity-collection-view__item BaseVerticalCollectionView 요소에 있는 항목 요소의 USS 클래스명입니다.

Unity는 이 USS 클래스를 BaseVerticalCollectionView가 포함된 모든 항목 요소에 추가합니다.이 클래스에 적용된 모든 스타일링은 시각적 트리의 스타일시트 옆이나 아래에 있는 모든 항목 요소에 영향을 줍니다.
dragHoverBarUssClassName .unity-collection-view__drag-hover-bar 드래그 호버 바의 USS 클래스명입니다.

Unity는 사용자가 리스트의 항목을 드래그할 때 표시되는 바에 이 USS 클래스를 추가합니다.이 클래스에 적용된 모든 스타일링은 시각적 트리의 스타일시트 옆이나 아래에 있는 모든 BaseVerticalCollectionView에 영향을 줍니다.
dragHoverMarkerUssClassName .unity-collection-view__drag-hover-marker 뎁스를 나타내는 데 사용되는 드래그 호버 원형 마커의 USS 클래스명입니다.

Unity는 사용자가 리스트의 항목을 드래그할 때 표시되는 바에 이 USS 클래스를 추가합니다.이 클래스에 적용된 모든 스타일링은 시각적 트리의 스타일시트 옆이나 아래에 있는 모든 BaseVerticalCollectionView에 영향을 줍니다.
itemDragHoverUssClassName .unity-collection-view__item--drag-hover 드래그 호버의 항목 요소에 적용되는 USS 클래스명입니다.

Unity는 드래그할 때 이 USS 클래스를 항목 요소에 추가합니다.이 클래스에 적용된 모든 스타일링은 시각적 트리의 스타일시트 옆이나 아래에 있는 모든 BaseVerticalCollectionView 항목에 영향을 줍니다.
itemSelectedVariantUssClassName .unity-collection-view__item--selected BaseVerticalCollectionView에 있는 선택한 항목 요소의 USS 클래스명입니다.

Unity는 BaseVerticalCollectionView에 있는 선택한 모든 요소에 이 USS 클래스를 추가합니다.BaseVerticalCollectionView.selectionType 프로퍼티는 요소를 0개, 1개 또는 그 이상 선택할 수 있는지를 결정합니다.이 클래스에 적용된 모든 스타일링은 시각적 트리의 스타일시트 옆이나 아래에 있는 모든 BaseVerticalCollectionView 항목에 영향을 줍니다.
itemAlternativeBackgroundUssClassName .unity-collection-view__item--alternative-background BaseVerticalCollectionView에 있는 홀수 행의 USS 클래스명입니다.

Unity는 BaseVerticalCollectionView.showAlternatingRowBackgrounds 프로퍼티가 ContentOnly 또는 All로 설정되면 BaseVerticalCollectionView의 모든 홀수 항목에 이 USS 클래스를 추가합니다.showAlternatingRowBackgrounds 프로퍼티를 이 값 중 하나로 설정하면 홀수 항목은 짝수 항목과 다른 배경 컬러로 표시됩니다.이 USS 클래스는 홀수 항목을 짝수 항목과 구분하는 데 사용됩니다.showAlternatingRowBackgrounds 프로퍼티가 None으로 설정되면 USS 클래스가 추가되지 않으며 이를 필요로 하는 모든 스타일링이나 동작이 무효화됩니다.
listScrollViewUssClassName .unity-collection-view__scroll-view BaseVerticalCollectionView에 있는 스크롤 뷰의 USS 클래스명입니다.

Unity는 BaseVerticalCollectionView의 스크롤 뷰에 이 USS 클래스를 추가합니다.이 클래스에 적용된 모든 스타일링은 시각적 트리의 스타일시트 옆이나 아래에 있는 모든 BaseVerticalCollectionView 스크롤 뷰에 영향을 줍니다.
disabledUssClassName .unity-disabled 비활성화된 로컬 요소의 USS 클래스명입니다.

또한 인스펙터 또는 UI 툴킷 디버거의 매칭 선택자 섹션을 사용하여 해당 계층 구조의 모든 레벨에서 VisualElement 컴포넌트에 영향을 주는 USS 선택자를 확인할 수도 있습니다.

추가 리소스

UXML 요소 ToolbarToggle
UXML 요소 TwoPaneSplitView