#unity/日常积累

TreeView

class in UnityEditor.IMGUI.Controls

描述

TreeView 是一种 IMGUI 控件,可用于为 Editor 工具创建树视图、列表视图和多列表格。

对于项的行内容渲染、拖动逻辑、选择逻辑、搜索、排序和重命名,均可进行自定义。为确保 TreeView 之间的一致性,以下功能不可自定义:折叠箭头渲染、选择渲染、拖动标记渲染。

BuildRoot 是一个很好的起点。

变量

baseIndent

用于所有行中树折叠箭头和内容之前的缩进。

cellMargin

使用 MultiColumnHeader 时,此值可调整为所有列(除了树折叠列)提供的单元格矩形。

columnIndexForTreeFoldouts

使用 MultiColumnHeader 时,此值应设置为显示折叠箭头的列的索引。

customFoldoutYOffset

折叠箭头的自定义垂直偏移量。

depthIndentWidth

该值返回折叠应针对每个递增深度值缩进的距离。

extraSpaceBeforeIconAndLabel

用于控制默认图标和标签前的间距的值。例如,可用于将切换按钮置于内容左侧。

foldoutOverride

注册此属性的回调以重载 TreeView 中的 Foldout 按钮。

foldoutWidth

内置折叠箭头的宽度。

getNewSelectionOverride

注册此字段的回调以重载 TreeView 如何处理选择更改以响应按键和鼠标点击。

hasSearch

TreeView 的当前搜索状态。

isDragging

如果用户当前正在拖动 TreeView 中的一个或多个项,则为 true;否则为 false。

isInitialized

通过调用 Reload() 对 TreeView 进行初始化。因此,在首次调用 Reload() 之前,均返回 false。

multiColumnHeader

获取 TreeView 的 MultiColumnHeader。如果创建 TreeView 时未使用 MultiColumnHeader,则为 null。

rootItem

TreeView 的隐藏根项(永不渲染)。

rowHeight

用于 TreeView 中每个行的固定高度(如果尚未重载 GetCustomRowHeight)。

searchString

TreeView 的当前搜索字符串。

showAlternatingRowBackgrounds

启用此选项可显示交替的行背景颜色。

showBorder

启用此选项可显示 TreeView 的边框。

showingHorizontalScrollBar

如果显示水平滚动条,则返回 true;否则返回 false。

showingVerticalScrollBar

如果显示垂直滚动条,则返回 true;否则返回 false。

state

TreeView 的状态(展开状态、选择、滚动等)

totalHeight

返回 TreeView 行高、MultiColumnHeader 高度(如果已使用)和边框(如果已使用)的总和。

treeViewControlID

TreeView 用于获取键盘控件焦点的 controlID。

treeViewRect

正在将 TreeView 渲染到的矩形。

useScrollView

在绘制 TreeView 内容时,它是否会包含在 ScrollView 中?

构造函数

TreeView

构建时 TreeView 时始终需要一个状态对象,并且可以选择一个多列标题对象(如果需要标题)。

公共函数

BeginRename

显示 TreeViewItem 的重命名覆盖。

CollapseAll

折叠 TreeView 中的所有展开项。

EndRename

如果已显示重命名覆盖,则结束重命名。如果在未显示重命名覆盖的情况下进行调用,此方法将不会执行任何操作。

ExpandAll

展开 TreeView 中的所有折叠项。

FrameItem

此方法将显示 ID 为 id 的项(通过展开此项的上级)并确保其在 ScrollView 中可见。

GetExpanded

返回当前在 TreeView 中展开的 TreeViewItem ID 的列表。

GetRows

这是已内置于 BuildRows 中的 TreeViewItem 的列表。

GetSelection

返回当前选中的 TreeViewItem ID 的列表。

HasFocus

如果 TreeView 及其 EditorWindow 具有键盘焦点,则返回 true。

HasSelection

如果 TreeView 有选择,则返回 true。

IsExpanded

如果 ID 为 id 的 TreeViewItem 当前已展开,则返回 true。

IsSelected

如果 ID 为 id 的 TreeViewItem 当前已选中,则返回 true。

OnGUI

这是 TreeView 的主 GUI 方法,将会处理和绘制 TreeViewItem。

Reload

调用此方法可强制 TreeView 重新加载其数据。这进而又会导致调用 BuildRoot 和 BuildRow。

Repaint

请求重绘渲染 TreeView 的窗口。

SelectAllRows

选择 TreeView 中的所有行。

SetExpanded

设置单个要展开或折叠的 TreeViewItem。

SetExpandedRecursive

展开或折叠具有 id 的项下的所有项。

SetFocus

调用此函数可将键盘焦点更改到 TreeView。

SetFocusAndEnsureSelectedItem

调用此函数可将键盘焦点更改到 TreeView 并确保已选择一个项。使用此函数可启用 TreeView 的键导航。

SetSelection

设置 TreeView 的选中项。

受保护的函数

AddExpandedRows

将完整树的展开行添加到输入列表。只有当完整树内置于 BuildRoot 时才使用此方法。

AfterRowsGUI

在所有行均已调用其 RowGUI 后调用此方法。

BeforeRowsGUI

在任意行调用其 RowGUI 之前调用此方法。

BuildRoot

需要实现的抽象方法。默认情况下,此方法应创建 TreeViewItem 的完整树并返回根。

BuildRows

重载此方法可控制行的生成方式。

CanBeParent

重载此方法可控制允许哪些项成为父项。

CanChangeExpandedState

重载此方法可控制某个项能否通过键或鼠标来展开或折叠。

CanMultiSelect

重载此方法可控制项能否成为多重选择的一部分。

CanRename

重载此方法可控制项能否通过键盘快捷键或单击已选中的项来进行重命名。

CanStartDrag

每当单击和拖动 TreeViewItem 时,将调用此函数。默认情况,返回 false。

CenterRectUsingSingleLineHeight

修改输入矩形,以便它居中并拥有等于 EditorGUIUtility.singleLineHeight 的高度。

CommandEventHandling

系统会自动调用此函数来处理“SelectAll”和“FrameSelection” 的 ExecuteCommand 事件。重载此函数可扩展或避免 Command 事件。

ContextClicked

重载此方法可处理任何项外部(但仍在 TreeView 矩形内)的上下文单击事件。

ContextClickedItem

重载此函数可处理针对项(ID 为 TreeViewItem.id)的上下文单击事件。

DoesItemMatchSearch

重载此函数可扩展或更改搜索行为。

DoubleClickedItem

重载此方法可处理针对项的双击事件。

ExpandedStateChanged

重载以在项展开或折叠时收到通知。这是一般通知,告知展开状态已更改。

FindItem

根据 ID 查找 TreeViewItem。

FindRowOfItem

Returns the row of the given TreeViewItem.

FindRows

可用于使用当前行从 TreeViewItem ID 转换为 TreeViewItem。

GetAncestors

举例而言,此方法可用于显示当前在某个折叠项下的各个项。

GetCellRectForTreeFoldouts

适用于多列设置的 Utility。此方法将根据 columnIndexForTreeFoldouts 定义的列矩形剪辑输入 rowRect,以获得显示折叠箭头的单元格矩形。

GetContentIndent

返回项的水平内容偏移量。这是内容应开始的位置(在折叠箭头之后)。

GetCustomRowHeight

重载以控制各个行高。

GetDescendantsThatHaveChildren

返回 ID 为 id 的项的具有子项的所有后代。

GetFirstAndLastVisibleRows

返回 TreeView 的滚动视图中显示的第一个和最后一个行索引。

GetFoldoutIndent

返回项的水平折叠偏移量。这是渲染折叠箭头的位置。

GetRenameRect

如果 RowGUI 中使用了自定义 GUI 处理,则重载此方法。此方法适用于显示重命名覆盖的控件。

GetRowRect

获取行矩形。

HandleDragAndDrop

重载此函数可控制 TreeView 的拖放行为。

KeyEvent

重载此方法可在 TreeView 具有键盘焦点时处理事件。

RefreshCustomRowHeights

根据 GetCustomRowHeight 返回的高度,刷新自定义行矩形的缓存。

RenameEnded

当重命名结束时调用,结束形式包括用户完成了重命名过程、重命名覆盖失去焦点或已使用 EndRename 关闭。

RowGUI

重载此方法可为 TreeView 中的行添加自定义 GUI 内容。

SearchChanged

重载此方法可获得关于搜索字符串更改的通知。

SelectionChanged

重载此方法可获得关于选择更改的通知。

SelectionClick

在 RowGUI 中使用此方法可执行鼠标单击逻辑。

SetupDragAndDrop

当 CanStartDrag 返回 true 时调用此函数。

SingleClickedItem

重载此方法可处理针对某个项的单击事件。

SortItemIDsInRowOrder

返回按在 TreeView 中显示的顺序存储的列表。

静态函数

CreateChildListForCollapsedParent

创建虚拟 TreeViewItem 列表。适用于重载 BuildRows 以防止构建完整项树的情况。

IsChildListForACollapsedParent

用于检查 childList 是否与 CreateChildListForCollapsedParent 方法返回的列表完全相同的 Utility 方法。

SetupDepthsFromParentsAndChildren

使用输入 TreeViewItem 的深度为其所有后代 TreeViewItem 设置正确深度的 Utility 方法。

SetupParentsAndChildrenFromDepths

使用已设置的顺序和深度值来初始化行的所有父属性和子属性的 Utility 方法。

委托

DoFoldoutCallback

用于重载 TreeView 折叠箭头的回调签名。请参阅 foldoutOverride。

GetNewSelectionFunction

这是一个回调,决定了 TreeView 如何处理选择更改以响应按键和鼠标点击。