TreeView 是一个 IMGUI 控件,可让您为编辑器工具创建树视图、列表视图和多列表格。
它在行内容渲染、拖放逻辑、选择逻辑、搜索、排序和项目重命名方面可定制。为了确保 TreeViews 之间的 一致性,以下功能不可定制:展开箭头渲染、选择渲染、拖放标记渲染。
一个好的起点是 BuildRoot。
baseIndent | 所有行在树展开箭头和内容之前的缩进。 |
cellMargin | 使用 MultiColumnHeader 时,此值会调整为所有列(除树展开列之外)提供的单元格矩形。 |
columnIndexForTreeFoldouts | 使用 MultiColumnHeader 时,此值应设置为展开箭头应出现的列索引。 |
customFoldoutYOffset | 展开箭头的自定义垂直偏移量。 |
depthIndentWidth | 返回每个递增深度值的展开缩进距离。 |
enableItemHovering | 如果需要项目悬停效果,请将此属性设置为 true。默认值为 false。 |
extraSpaceBeforeIconAndLabel | 用于控制默认图标和标签之前的间距的值。例如,可以用来在内容左侧放置一个切换按钮。 |
foldoutOverride | 注册一个回调到此属性以覆盖 TreeView 中的展开按钮。 |
foldoutWidth | 内置展开箭头的宽度。 |
getNewSelectionOverride | 注册一个回调到此字段以覆盖 TreeView 如何响应按键和鼠标点击处理选择更改。 |
hasSearch | TreeView 的当前搜索状态。 |
hoveredItem | 使用此属性可检测鼠标光标当前在 TreeView 中悬停的 TreeViewItem。此属性仅在 enableItemHovering 属性设置为 true 时才有效。 |
isDragging | 如果用户当前正在 TreeView 中拖动一个或多个项目,则为 true,否则为 false。 |
isInitialized | TreeView 通过调用 Reload() 初始化。因此,在第一次调用 Reload() 之前返回 false。 |
multiColumnHeader | 获取 TreeView 的 MultiColumnHeader。如果 TreeView 在没有 MultiColumnHeader 的情况下创建,则可能为 null。 |
rootItem | TreeView 的隐藏根项目(永远不会渲染)。 |
rowHeight | 如果 GetCustomRowHeight 没有被重写,则 TreeView 中每一行使用的固定高度。 |
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 中构建的 TreeViewItems 列表。 |
GetSelection | 返回当前选定的 TreeViewItem ID 列表。 |
HasFocus | 如果 TreeView 及其 EditorWindow 具有键盘焦点,则返回 true。 |
HasSelection | 如果 TreeView 具有选择,则返回 true。 |
IsExpanded | 如果 ID 为 id 的 TreeViewItem 当前已展开,则返回 true。 |
IsSelected | 如果 ID 为 id 的 TreeViewItem 当前已选中,则返回 true。 |
OnGUI | 这是 TreeView 的主要 GUI 方法,在此方法中,TreeViewItems 会被处理和绘制。 |
Reload | 调用此方法以强制 TreeView 重新加载其数据。这反过来会导致调用 BuildRoot 和 BuildRows。 |
Repaint | 请求重绘渲染 TreeView 的窗口。 |
SelectAllRows | 选择 TreeView 中的所有行。 |
SetExpanded | 将单个 TreeViewItem 设置为展开或折叠。 |
SetExpandedRecursive | 展开或折叠 ID 为 id 的项目下的所有项目。 |
SetFocus | 调用此函数会将键盘焦点更改为 TreeView。 |
SetFocusAndEnsureSelectedItem | 调用此函数会将键盘焦点更改为 TreeView 并确保选中了项目。使用此函数可以启用 TreeView 的键导航。 |
SetSelection | 设置 TreeView 的选中项目。 |
AddExpandedRows | 将完整树的展开行添加到输入列表中。仅当在 BuildRoot 中构建了完整树时才使用此方法。 |
AfterRowsGUI | 在所有行调用其 RowGUI 后调用此方法。 |
BeforeRowsGUI | 在任何行调用其 RowGUI 之前调用此方法。 |
BuildRoot | 需要实现的抽象方法。默认情况下,此方法应创建 TreeViewItems 的完整树并返回根。 |
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 | 返回给定 TreeViewItem 的行。 |
FindRows | 使用当前行,可以将 TreeViewItem ID 转换为 TreeViewItems,非常有用。 |
GetAncestors | 例如,此方法用于显示当前在折叠项目下的项目。 |
GetCellRectForTreeFoldouts | 多列设置的实用程序。此方法会根据 columnIndexForTreeFoldouts 定义的列矩形剪裁输入行矩形,以获取展开箭头出现的单元格矩形。 |
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 | 用于检查子列表是否与 CreateChildListForCollapsedParent 方法返回的列表相同的方法。 |
SetupDepthsFromParentsAndChildren | 使用输入 TreeViewItem 的深度来设置其所有后代 TreeViewItems 的正确深度的实用程序方法。 |
SetupParentsAndChildrenFromDepths | 用于使用已设置的顺序和深度值初始化所有行的 parent 和 children 属性的实用程序方法。 |
DoFoldoutCallback | 用于覆盖 TreeView 展开的回调签名。请参见 foldoutOverride。 |
GetNewSelectionFunction | 一个回调,它确定 TreeView 如何响应按键和鼠标点击处理选择更改。 |