MultiColumnTreeView는 일반적으로 여러 열이 있는 테이블 또는 그리드와 유사한 데이터를 표시하는 데 사용되는__ UI__(사용자 인터페이스) 사용자가 애플리케이션과 상호 작용하도록 해 줍니다. Unity는 현재 3개의 UI 시스템을 지원합니다. 자세한 정보
See in Glossary 컨트롤입니다. MultiColumnTreeView를 사용하여 데이터를 정형화 포맷으로 표시합니다. 여기서 각 행은 항목 또는 엔트리를 나타내고 각 열은 해당 항목의 특정 속성 또는 프로퍼티를 나타냅니다.
UXML과 C#을 사용하여 MultiColumnTreeView를 생성할 수 있습니다. 다음 C# 예시에서는 2개의 열이 있는 MultiColumnTreeView를 생성합니다.
var multiColumnTreeView = new MultiColumnTreeView();
multiColumnTreeView.columns.Add(new Column { title = "Name", width = 20 });
multiColumnTreeView.columns.Add(new Column { title = "Power", width = 80 });
컬렉션 뷰를 새로 고치려면 일반적으로 RefreshItems 또는 RefreshItem 메서드를 호출합니다. 그러나 다음의 경우 대신 Rebuild를 호출하여 컬렉션 뷰를 새로 고칩니다.
List<float>를 List<Vector3>로 변경)makeItem 또는 destroyItem을 변경하는 경우
참고: Rebuild를 호출하면 컬렉션 뷰가 완전히 다시 빌드되므로 리소스가 많이 소모될 수 있습니다. RefreshItems 또는 RefreshItem을 호출하는 경우 컬렉션 뷰만 새로고침되므로 리소스가 비교적 덜 소모됩니다.
MultiColumnTreeView를 데이터 소스에 바인딩하고 제공된 데이터에 따라 자동으로 행과 열을 채울 수 있습니다. 리스트 및 트리 뷰 생성에서 예시를 참조하십시오.
디폴트 알고리즘을 사용하여 MultiColumnTreeView의 정렬을 활성화하거나, 디폴트 정렬 작업이 원하는 만큼 빠르지 않은 경우 커스텀 알고리즘을 구현할 수 있습니다.
정렬이 활성화된 후 단일 열을 기준으로 정렬하려면 열 헤더를 클릭합니다. 여러 열을 정렬하려면 Ctrl 키(macOS: Cmd)를 누른 상태로 클릭합니다. 정렬을 비활성화하려면 Shift 키를 누른 상태로 클릭합니다.
기본 알고리즘을 사용하여 정렬을 활성화하려면 sortingMode 속성을 ColumnSortingMode.Default로 설정하고, 소스에서 두 항목의 인덱스를 기준으로 비교하려면 Column.comparison을 구현합니다.
예시는 MultiColumnTreeView 기본 정렬 예시를 참조하십시오.
커스텀 정렬을 구현하려면 sortingMode 속성을 ColumnSortingMode.Custom으로 설정하고 columnSortingChanged 콜백을 구현합니다. 콜백에서 sortColumns를 사용하여 리스트 순서를 변경하고 항목 소스가 업데이트된 후에 RefreshItems()를 트리거합니다.
sortColumns 속성은 정렬된 열의 현재 상태입니다. 정렬된 순서대로 열을 나열합니다. 열 1을 기준으로 정렬한 다음 열 2, 열 3을 기준으로 정렬하면 sortedColumns 리스트는 [1, 2, 3]입니다. 열 3을 기준으로 정렬한 다음 열 2, 열 1을 기준으로 정렬하면 sortedColumns 리스트는 [3, 2, 1]입니다.
드래그 앤 드롭은 UI 디자인에서 흔히 사용되는 기능입니다. 드래그 앤 드롭 작업을 구현하려면 다음 메서드를 오버라이드하십시오.
canStartDrag를 오버라이드하십시오.setupDragAndDrop을 오버라이드하십시오.dragAndDropUpdate를 오버라이드하십시오. 드래그 위치 또는 기타 조건에 따라 특정 동작을 수행할 수 있습니다.handleDrop을 오버라이드하십시오.드래그 앤 드롭 작업 중에 드래그를 통해 항목 순서를 변경할 수 있습니다. 이를 활성화하려면 UI 빌더, UXML 및 C#에서 reorderable 속성을 true로 설정하십시오.
서로 다른 창들의 드래그 앤 드롭 목록과 트리 뷰 생성에서 예시를 확인하십시오.
다음은 MultiColumnTreeView 컨트롤에 대해 자주 묻는 질문입니다.
화면에 보이는 행의 인덱스를 얻을 수 있습니까?
이 용도의 전용 API는 없습니다. bindItem 및 unbindItem 콜백을 사용하여 이러한 인덱스를 추적할 수 있습니다.
뷰에 표시되는 행 목록을 가져올 수 있습니까?
이 용도의 전용 API는 없습니다. UQuery를 사용하여 관심 요소를 검색할 수 있습니다.
뷰 컨트롤러의 오버라이드된 함수 중 하나라도 base.Method를 호출해야 합니까?
기본 동작을 확장하려는 경우에만 이 메서드를 호출합니다.
행에 토글을 추가했습니다. 사용자가 선택해도 선택 항목이 해당 행으로 이동하지 않는 이유는 무엇입니까?
기본적으로 행은 마우스 다운 이벤트가 행의 콘텐츠에 의해 사용되지 않는 경우에만 선택됩니다. 이 경우 토글은 이벤트 전파를 중지합니다. 이 문제를 해결하려면 토글에서 TrickleDown이 있는 PointerDownEvent 콜백을 등록하여 SetSelection을 호출합니다.
사용자가 뷰에서 선택 항목을 바꿨을 때는 콜백을 어떻게 받습니까?
필요한 경우 인덱스별로 데이터를 가져오기 위해 selectedIndicesChanged 콜백을 사용하는 것이 좋습니다. selectionChanged도 사용할 수 있지만, 오브젝트 목록을 반환하므로 값 유형과 함께 사용할 경우 박싱 할당이 발생할 수 있습니다.
ID에서 인덱스로 전환하거나 그 반대로 전환하려면 어떻게 해야 합니까?
BaseTreeViewController.GetIndexForId와 BaseTreeViewController.GetIdForIndex를 사용합니다.
가로 MultiColumnTreeView를 사용할 수 있습니까?
MultiColumnTreeView 컨트롤은 가로 레이아웃과 가상화를 지원하지 않습니다. 요소를 가로로 레이아웃하려면 ScrollView와 flex-direction: row를 함께 사용하는 것이 좋습니다.
C# 클래스: MultiColumnTreeView
네임스페이스: UnityEngine.UIElements
기본 클래스: BaseTreeView
이 요소에는 다음 구성원 속성이 있습니다.
| 이름 | 유형 | 설명 |
|---|---|---|
columns |
UIElements.Columns+UxmlSerializedData |
다중 열 헤더에 대한 열 컬렉션입니다. |
sort-column-descriptions |
UIElements.SortColumnDescriptions+UxmlSerializedData |
기본적으로 정렬된 열 컬렉션입니다. |
sorting-enabled |
boolean |
다중 열 헤더에서의 정렬 활성화 여부입니다. 지원 중단되었습니다. 대신 sortingMode를 사용하십시오. |
sorting-mode |
UIElements.ColumnSortingMode |
열을 정렬하는 방법을 나타냅니다. 정렬을 활성화하려면 ColumnSortingMode.Default 또는 ColumnSortingMode.Custom으로 설정하십시오. Default 모드는 MultiColumnController가 제공하며 인덱스에 작용하는 정렬 알고리즘을 사용합니다. 또한 columnSortingChanged 이벤트에 응답하여 Custom 모드로 자체 정렬을 구현할 수도 있습니다.참고: 정렬된 열이 하나라도 있는 경우 재정렬이 일시적으로 비활성화됩니다. |
이 요소는 다음 속성을 해당 기본 클래스에서 상속합니다.
| 이름 | 유형 | 설명 | |
|---|---|---|---|
auto-expand |
boolean |
true인 경우 항목이 TreeView에 추가되면 자동으로 확장됩니다. | |
binding-path |
string |
바인딩할 타겟 프로퍼티의 경로입니다. | |
fixed-item-height |
float |
목록에 있는 단일 항목의 픽셀 단위 높이입니다. 컬렉션 뷰를 작동하려면 virtualizationMethod가 FixedHeight로 설정된 경우 이 프로퍼티를 설정해야 합니다. virtualizationMethod가 DynamicHeight일 때 설정하면 항목이 배치되기 전에 필요한 항목 수와 스크롤 가능한 영역을 계산하는 데 도움이 되는 기본 높이로 사용됩니다. 항목의 예상 최소 높이로 설정해야 합니다. |
|
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에서 상속합니다.
| 이름 | 유형 | 설명 | |
|---|---|---|---|
content-container |
string |
자식 요소가 추가되며, 일반적으로 요소 자체와 동일합니다. | |
data-source |
Object |
상속된 모든 데이터 소스를 재정의하는 이 VisualElement에 데이터 소스를 할당합니다. 이 데이터 소스는 모든 자식이 상속합니다. | |
data-source-path |
string |
데이터 소스에서 값에 이르는 경로입니다. | |
data-source-type |
System.Type |
이 VisualElement에 할당 가능한 데이터 소스 유형입니다. 이 정보는 디자인 시 효과적인 데이터 소스를 지정할 수 없는 경우, UI Builder가 데이터 소스 경로 필드를 어느 정도 완성하기 위한 힌트로만 사용됩니다. |
|
language-direction |
UIElements.LanguageDirection |
요소의 텍스트 방향성을 나타냅니다. 이 값은 요소의 자식으로 전파됩니다. languageDirection을 RTL로 설정하면 텍스트를 뒤집고 줄 바꿈과 자동 줄 바꿈을 적절하게 처리함으로써 RTL(오른쪽에서 왼쪽으로 쓰기)에 대한 기본 지원이 추가됩니다. 그러나 포괄적인 RTL 지원은 제공되지 않는데, 이 경우 문자 순서 변경과 OpenType 폰트 기능 지원이 포함된 텍스트 셰이핑이 필요하기 때문입니다. 향후 업데이트를 통해 언어, 스크립트 및 폰트 기능 사양을 처리하기 위한 추가 API가 포함된 포괄적인 RTL 지원을 제공할 예정입니다. 이 프로퍼티의 RTL기능을 향상하기 위해 사용자는 Unity 에셋 스토어에서 사용 가능한 타사 플러그인을 탐색해 ITextElementExperimentalFeatures.renderedText를 활용할 수 있습니다 |
|
name |
string |
이 VisualElement의 이름입니다. 이 프로퍼티를 사용하여 특정 요소를 타게팅하는 USS 선택자를 작성할 수 있습니다. 요소에는 일반적으로 고유한 이름을 부여해야 합니다. |
|
picking-mode |
UIElements.PickingMode |
마우스 이벤트나 IPanel.Pick 쿼리 중에 이 요소를 선택할 수 있는지 여부를 결정합니다. |
|
style |
string |
VisualElement 스타일 값을 설정합니다. |
|
tooltip |
string |
사용자가 요소를 잠시 동안 가리킬 경우 정보 상자 안에 표시할 텍스트입니다. 에디터 UI에서만 지원됩니다. | |
usage-hints |
UIElements.UsageHints |
VisualElement에 대한 고수준의 의도된 사용 패턴을 지정하는 힌트 값 조합입니다. 이 프로퍼티는 VisualElement가 아직 Panel에 포함되어 있지 않을 때만 설정할 수 있습니다. Panel에 포함되면 이 프로퍼티는 사실상 읽기 전용이 되며, 변경을 시도하면 예외가 발생합니다. 적절한 UsageHints를 지정하면 시스템에서 예상하는 사용 패턴에 따라 특정 작업을 처리하거나 가속하는 방법에 대해 더 나은 결정을 내릴 수 있습니다. 이러한 힌트는 동작이나 시각적 결과에는 영향을 주지 않으며 패널과 그 안의 요소의 전반적인 성능에만 영향을 미칩니다. 항상 적절한 UsageHints를 지정하는 것이 좋지만, 일부 UsageHints는 특정 조건(예: 타겟 플랫폼의 하드웨어 제한 등)에서 내부적으로 무시될 수 있다는 점에 유의하십시오. |
|
view-data-key |
string |
트리 확장 상태, 스크롤 위치, 줌 레벨 등과 같은 보기 데이터 지속성에 사용됩니다. 이 키는 뷰 데이터 스토어의 뷰 데이터를 저장하고 로드하는 데 사용됩니다. 이 키를 설정하지 않으면 연결된 VisualElement의 지속성이 비활성화됩니다. 자세한 내용은 보기 데이터 지속성을 참고하십시오. |
다음 표는 모든 C# 공용 프로퍼티 이름과 관련 USS 선택자의 리스트입니다.
| C# 프로퍼티 | USS 선택자 | 설명 |
|---|---|---|
ussClassName |
.unity-tree-view |
TreeView 요소의 USS 클래스명입니다. Unity는 이 USS 클래스를 TreeView 요소의 모든 인스턴스에 추가합니다. 이 클래스에 적용된 모든 스타일링은 시각적 트리의 스타일시트 옆이나 아래에 있는 모든 TreeView에 영향을 줍니다. |
itemUssClassName |
.unity-tree-view__item |
TreeView 항목 요소의 USS 클래스명입니다. Unity는 이 USS 클래스를 TreeView의 모든 항목 요소에 추가합니다. 이 클래스에 적용된 모든 스타일링은 시각적 트리의 스타일시트 옆이나 아래에 있는 모든 항목에 영향을 줍니다. |
itemToggleUssClassName |
.unity-tree-view__item-toggle |
TreeView 항목 토글 요소의 USS 클래스명입니다. Unity는 이 USS 클래스를 TreeView의 모든 항목 토글 요소에 추가합니다. 이 클래스에 적용된 모든 스타일링은 시각적 트리의 스타일시트 옆이나 아래에 있는 모든 항목에 영향을 줍니다. |
itemIndentsContainerUssClassName |
.unity-tree-view__item-indents |
TreeView 인덴트 컨테이너 요소의 USS 클래스명입니다. Unity는 이 USS 클래스를 TreeView의 모든 인덴트 컨테이너 요소에 추가합니다. 이 클래스에 적용된 모든 스타일링은 시각적 트리의 스타일시트 옆이나 아래에 있는 모든 항목에 영향을 줍니다. |
itemIndentUssClassName |
.unity-tree-view__item-indent |
TreeView 인덴트 요소의 USS 클래스명입니다. Unity는 이 USS 클래스를 TreeView의 모든 인덴트 요소에 추가합니다. 이 클래스에 적용된 모든 스타일링은 시각적 트리의 스타일시트 옆이나 아래에 있는 모든 항목에 영향을 줍니다. |
itemContentContainerUssClassName |
.unity-tree-view__item-content |
TreeView 항목 컨테이너 요소의 USS 클래스명입니다. Unity는 이 USS 클래스를 TreeView의 모든 항목 컨테이너 요소에 추가합니다. 이 클래스에 적용된 모든 스타일링은 시각적 트리의 스타일시트 옆이나 아래에 있는 모든 항목에 영향을 줍니다. |
ussClassName |
.unity-collection-view |
BaseVerticalCollectionView 요소의 USS 클래스명입니다. Unity는 이 USS 클래스를 BaseVerticalCollectionView 요소의 모든 인스턴스에 추가합니다. 이 클래스에 적용된 모든 스타일링은 시각적 트리의 스타일시트 옆이나 아래에 있는 모든 BaseVerticalCollectionView에 영향을 줍니다. |
borderUssClassName |
.unity-collection-view--with-border |
테두리가 있는 BaseVerticalCollectionView 요소의 USS 클래스명입니다. BaseVerticalCollectionView 요소의 인스턴스의 BaseVerticalCollectionView.showBorder 프로퍼티가 true로 설정된 경우 Unity는 이 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 선택자를 확인할 수도 있습니다.