版本: Unity 6 (6000.0)
语言英语
  • C#

TreeView

UnityEditor.IMGUI.Controls 中的类

建议修改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交的内容,但我们会阅读用户提出的每项建议,并在适用的情况下进行更新。

关闭

提交失败

由于某些原因,您的建议修改无法提交。请 <a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

描述

TreeView 是一个 IMGUI 控件,可让您为编辑器工具创建树视图、列表视图和多列表格。

它在行内容渲染、拖放逻辑、选择逻辑、搜索、排序和项目重命名方面可定制。为了确保 TreeViews 之间的 一致性,以下功能不可定制:展开箭头渲染、选择渲染、拖放标记渲染。

一个好的起点是 BuildRoot

属性

baseIndent所有行在树展开箭头和内容之前的缩进。
cellMargin使用 MultiColumnHeader 时,此值会调整为所有列(除树展开列之外)提供的单元格矩形。
columnIndexForTreeFoldouts使用 MultiColumnHeader 时,此值应设置为展开箭头应出现的列索引。
customFoldoutYOffset展开箭头的自定义垂直偏移量。
depthIndentWidth返回每个递增深度值的展开缩进距离。
enableItemHovering如果需要项目悬停效果,请将此属性设置为 true。默认值为 false。
extraSpaceBeforeIconAndLabel用于控制默认图标和标签之前的间距的值。例如,可以用来在内容左侧放置一个切换按钮。
foldoutOverride注册一个回调到此属性以覆盖 TreeView 中的展开按钮。
foldoutWidth内置展开箭头的宽度。
getNewSelectionOverride注册一个回调到此字段以覆盖 TreeView 如何响应按键和鼠标点击处理选择更改。
hasSearchTreeView 的当前搜索状态。
hoveredItem使用此属性可检测鼠标光标当前在 TreeView 中悬停的 TreeViewItem。此属性仅在 enableItemHovering 属性设置为 true 时才有效。
isDragging如果用户当前正在 TreeView 中拖动一个或多个项目,则为 true,否则为 false。
isInitializedTreeView 通过调用 Reload() 初始化。因此,在第一次调用 Reload() 之前返回 false。
multiColumnHeader获取 TreeView 的 MultiColumnHeader。如果 TreeView 在没有 MultiColumnHeader 的情况下创建,则可能为 null。
rootItemTreeView 的隐藏根项目(永远不会渲染)。
rowHeight如果 GetCustomRowHeight 没有被重写,则 TreeView 中每一行使用的固定高度。
searchStringTreeView 的当前搜索字符串。
showAlternatingRowBackgrounds启用此选项以显示交替的行背景颜色。
showBorder启用此选项以在 TreeView 周围显示边框。
showingHorizontalScrollBar如果水平滚动条正在显示,则返回 true,否则返回 false。
showingVerticalScrollBar如果垂直滚动条正在显示,则返回 true,否则返回 false。
stateTreeView 的状态(展开状态、选择、滚动等)。
totalHeight返回 TreeView 行高度、MultiColumnHeader 高度(如果使用)和边框(如果使用)的总和。
treeViewControlIDTreeView 用于获取键盘控制焦点的 controlID。
treeViewRectTreeView 渲染到的矩形。
useScrollView在绘制 TreeView 内容时,是否将其包含在 ScrollView 中?

构造函数

TreeViewTreeView 始终使用状态对象构造,如果需要标题,可以选择使用多列标题对象。

公共方法

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 如何响应按键和鼠标点击处理选择更改。