Unity3D :UXML 元素列表视图

推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生

UXML 元素列表视图

列表视图是一个可垂直滚动的区域,它链接到并显示项目列表。

注意:水平和垂直滚动条元素是标准元素用户界面
工具包滚动条。

绑定列表视图

如果要创建包含复杂数据的列表视图并将列表视图绑定到视觉元素
,执行以下操作:

  • 使用 和 将 ListView 绑定到数据,注册相应的回调,并根据需要修改链接数据源。makeItembindItem
  • 用于回收 ListView 的元素并取消绑定数据。unbindItem
  • 用于清除已注册的回调。destroyItem

列表视图与滚动视图

可以使用 ScrollView 控件创建与使用 ListView 相同的功能。但是,当您执行以下操作时,列表视图比滚动视图更有效:

  • 填充列表项
  • 管理项目高度
  • 绑定和取消绑定到对象
  • 实例化填充页面所需的可视元素数
  • 回收可视元素以优化内存处理

设置项目高度

要更改项目高度用于驱动内容的方式,请使用虚拟化方法:

  • VirtualizationMethod.FixedHeight将所有项目设置为相同的高度。
  • VirtualizationMethod.DynamicHeight允许项目具有不同的高度。

控制滚动速度

要控制列表视图的滚动速度,请覆盖 USS 内置变量 。默认值为 。例如:--unity-metrics-single_line-height18px

:root {
--unity-metrics-single_line-height: 500px;
}

重要: 如果使用 without 参数 或 时,它会添加一个阻止行高传播的 。请改用。CloneTree()Instantiate()TemplateContainerCloneTree(root)

例子

​了解如何使用 ListView 的最佳方法是尝试示例:

  • 若要查看简单的列表视图示例,请在 Unity 中,选择“窗口> UI 工具包”>“示例”>“列表视图”。
  • 创建复杂列表视图:创建包含复杂数据的列表视图,并将列表视图绑定到可视元素。
  • 使用 ListView 绑定到列表:创建切换列表并将列表绑定到对象的基础列表。GameSwitch

C# 基类和命名空间

C# 类:列表视图命名空间:基
基列表视图
UnityEngine.UIElements

继承的属性

此元素从其基类继承以下属性:

名字类型描述
binding-pathstring要绑定的目标属性的路径。
fixed-item-heightint列表中单个项的高度(以像素为单位)。

使用 设置为 时,必须设置此属性,集合视图才能正常工作。
virtualizationMethodFixedHeight
focusableboolean如果元素可以聚焦,则为 True。
header-titlestring此属性控制使用 时折叠页眉的文本。showFoldoutHeader
reorder-modeUIElements.ListViewReorderMode此属性控制列表视图的拖放模式。

默认值为 。当此属性设置为 时,Unity 会在每个项目的前面添加拖动手柄,拖放操作将在重新排序时推送带有动画的项目。仅拖动模式支持多项目重新排序。
SimpleAnimatedSimple
reorderableboolean获取或设置一个值,该值指示用户是否可以拖动列表项以对其重新排序。

默认值为 。将此值设置为 允许用户拖放列表中的项目。集合视图提供默认控制器以允许标准行为。它还会自动处理对数据源中的项的重新排序。
falsetrue
selection-typeUIElements.SelectionType控制选择类型。

默认值为 。将集合视图设置为禁用选择时,将清除任何当前选择。
SelectionType.Single
show-add-remove-footerboolean此属性控制是否将页脚添加到列表视图中。

默认值为 。当此属性设置为 时,Unity 会在滚动视图下添加一个页脚。此页脚包含两个按钮:“+”按钮。单击时,在列表视图的末尾添加一个项目。一个“-”按钮。单击时,将删除所有选定项目,如果未选择任何项目,则删除最后一个项目。
falsetrue
show-alternating-row-backgroundsUIElements.AlternatingRowBackground此属性控制集合视图行的背景色是否交替。从枚举中获取一个值。AlternatingRowBackground
show-borderboolean启用此属性可在集合视图周围显示边框。

如果设置为 true,则集合视图在内部使用的 ScrollView 周围将显示一个边框。
show-bound-collection-sizeboolean此属性控制列表视图是否显示集合大小(项数)。

默认值为 。当此属性设置为 时,Unity 将集合大小显示为列表中的第一项,但不会使其成为列表索引中的实际列表项。如果查询列表索引 0,Unity 将返回第一个实际列表项,而不是集合大小。如果设置为 ,则集合大小字段将改为包含在标头中。此属性通常用于调试 ListView,因为它指示数据源是否正确链接。在生产中,集合大小很少在 ListView 中显示为行项。

SA:
truetrueshowFoldoutHeadertrueUnityEditor.UIElements.BindingExtensions.Bind
show-foldout-headerboolean此属性控制列表视图是否以可展开或折叠的折叠页的形式显示页眉。

默认值为 。当此属性设置为 时,Unity 会在列表视图的层次结构中添加一个折叠视图,并将滚动视图移动到该新创建的折叠页内。可以使用 ListView 上的属性更改此折叠页的文本。如果设置为 ,则标头将包含一个用于控制数组大小的 TextField,而不是将该字段用作列表的一部分。
falsetrueheaderTitleshowBoundCollectionSizetrue
tabindexint用于对焦点环中的可聚焦对象进行排序的整数。必须大于或等于零。
virtualization-methodUIElements.CollectionVirtualizationMethod滚动条可见时用于此集合的虚拟化方法。从枚举中获取一个值。

默认值为 。使用固定高度时,需要指定属性。固定高度的性能更高,但内容灵活性较低。使用 时,集合将等待计算实际高度。动态高度更灵活,但性能较差。
CollectionVirtualizationMethodFixedHeightfixedItemHeightDynamicHeight

此元素还从可视元素继承以下属性:

名字类型描述
content-containerstring子元素被添加到其中,通常这与元素本身相同。
namestring此可视元素的名称。

使用此属性可以编写面向特定元素的 USS 选择器。标准做法是为元素指定一个唯一的名称。
picking-modeUIElements.PickingMode确定是否可以在鼠标事件或查询期间选取此元素。IPanel.Pick
stylestring引用此元素的样式对象。

包含从 USS 文件或以 C# 写入此对象的内联样式计算的数据。
tooltipstring用户将元素悬停一小段时间后要在信息框中显示的文本。
usage-hintsUIElements.UsageHints提示值的组合,用于指定 的高级预期使用模式。仅当 尚未成为 的一部分时,才能设置此属性。一旦 的一部分,此属性将变为有效的只读,并且尝试更改它将引发异常。适当的规范驱动系统根据预期的使用模式就如何处理或加速某些操作做出更好的决策。请注意,这些提示不会影响行为或视觉结果,而只会影响面板和其中元素的整体性能。建议始终考虑指定正确的 ,但请记住,在某些情况下(例如,由于目标平台上的硬件限制),某些可能会在内部被忽略。VisualElementVisualElementPanelPanelUsageHintsUsageHintsUsageHints
view-data-keystring用于视图数据持久性(即树展开状态、滚动位置、缩放级别)。

这是用于从视图数据存储保存/加载视图数据的键。不设置此项将禁用此 的持久性。
VisualElement

美国航空母舰类

下表列出了所有 C# 公共属性名称及其相关的 USS 选择器。

C# 属性美国航空母舰选择器描述
ussClassName.unity-list-view列表视图元素的 USS 类名。

Unity 将此 USS 类添加到 ListView 元素的每个实例中。应用于此类的任何样式都会影响可视化树中样式表旁边或下方的每个 ListView。
itemUssClassName.unity-list-view__item列表视图元素中项元素的 USS 类名。

Unity 将此 USS 类添加到列表视图包含的每个项目元素中。应用于此类的任何样式都会影响可视化树中样式表旁边或下方的每个项元素。
emptyLabelUssClassName.unity-list-view__empty-label当列表视图为空时显示的标签的 USS 类名。

Unity 将此 USS 类添加到列表视图为空时显示的标签中。应用于此类的任何样式都会影响可视化树中样式表旁边或下方的每个空标签。
reorderableUssClassName.unity-list-view__reorderable可重新排序的动画列表视图元素的 USS 类名。

Unity 将此 USS 类添加到 ListView 元素的每个实例中,当设置为 .应用于此类的任何样式都会影响可视化树中样式表旁边或下方的每个 ListView。
reorderModeAnimated
reorderableItemUssClassName.unity-list-view__reorderable-item可重新排序的动画列表视图中项元素的 USS 类名。

Unity 将此 USS 类添加到列表视图中的每个元素中,当设置为 .应用于此类的任何样式都会影响可视化树中样式表旁边或下方的每个元素。
reorderModeAnimated
reorderableItemContainerUssClassName.unity-list-view__reorderable-item__container可重新排序的动画列表视图中项容器的 USS 类名。

Unity 将此 USS 类添加到列表视图中的每个项目容器中,当设置为 .应用于此类的任何样式都会影响可视化树中样式表旁边或下方的每个项容器。
reorderModeAnimated
reorderableItemHandleUssClassName.unity-list-view__reorderable-handle可重新排序的动画列表视图中拖动手柄的 USS 类名称。

Unity 将此 USS 类添加到列表视图中,当设置为 .应用于此类的任何样式都会影响可视化树中样式表旁边或下方的每个拖动手柄。
reorderModeAnimated
reorderableItemHandleBarUssClassName.unity-list-view__reorderable-handle-bar可重新排序的动画列表视图中拖动手柄栏的 USS 类名称。

Unity 将此 USS 类添加到列表视图中的每个拖动手柄栏,当设置为 .应用于此类的任何样式都会影响可视化树中样式表旁边或下方的每个拖动手柄栏。
reorderModeAnimated
footerUssClassName.unity-list-view__footer列表视图页脚的 USS 类名。

Unity 将此 USS 类添加到列表视图中的页脚元素中。应用于此类的任何样式都会影响可视化树中样式表旁边或下方的每个 ListView。
foldoutHeaderUssClassName.unity-list-view__foldout-header列表视图的折叠页眉的 USS 类名。

Unity 将此 USS 类添加到列表视图中的折叠元素中。应用于此类的任何样式都会影响可视化树中样式表旁边或下方的每个折叠页。
arraySizeFieldUssClassName.unity-list-view__size-field启用折叠页眉时列表视图的大小字段的 USS 类名。

Unity 将此 USS 类添加到列表视图中的大小字段元素中,当设置为 .应用于此类的任何样式都会影响可视化树中样式表旁边或下方的每个大小字段。
showFoldoutHeadertrue
listViewWithHeaderUssClassName.unity-list-view--with-header启用折叠页眉时列表视图的 USS 类名。

Unity 在设置为 时将此 USS 类添加到列表视图中。应用于此类的任何样式都会影响可视化树中样式表旁边或下方的每个列表。
showFoldoutHeadertrue
listViewWithFooterUssClassName.unity-list-view--with-footer启用添加/删除页脚时列表视图的 USS 类名。

Unity 在设置为 时将此 USS 类添加到列表视图中。应用于此类的任何样式都会影响可视化树中样式表旁边或下方的每个列表。
showAddRemoveFootertrue
scrollViewWithFooterUssClassName.unity-list-view__scroll-view--with-footer启用添加/删除页脚时滚动视图的 USS 类名。

Unity 在设置为 时将此 USS 类添加到列表视图的滚动视图中。应用于此类的任何样式都会影响可视化树中样式表旁边或下方的每个列表。
showAddRemoveFootertrue
ussClassName.unity-collection-viewBaseVerticalCollectionView 元素的 USS 类名。

Unity 将此 USS 类添加到 BaseVerticalCollectionView 元素的每个实例中。应用于此类的任何样式都会影响可视化树中样式表旁边或下方的每个 BaseVerticalCollectionView。
borderUssClassName.unity-collection-view--with-border带有边框的 BaseVerticalCollectionView 元素的 USS 类名称。

Unity 将此 USS 类添加到 BaseVerticalCollectionView 元素的实例中(如果该实例的属性设置为 true)。应用于此类的任何样式都会影响位于可视化树中样式表旁边或下方的每个此类 BaseVerticalCollectionView。
BaseVerticalCollectionView.showBorder
itemUssClassName.unity-collection-view__itemBaseVerticalCollectionView 元素中项元素的 USS 类名。

Unity 将此 USS 类添加到 BaseVerticalCollectionView 包含的每个项目元素中。应用于此类的任何样式都会影响可视化树中样式表旁边或下方的每个项元素。
dragHoverBarUssClassName.unity-collection-view__drag-hover-bar拖动悬停栏的 USS 类名。

Unity 将此 USS 类添加到拖动项目元素时显示的栏中。该属性必须为 true 才能拖动项。应用于此类的任何样式都会影响可视化树中样式表旁边或下方的每个 BaseVerticalCollectionView。
BaseVerticalCollectionView.reorderable
itemDragHoverUssClassName.unity-collection-view__item--drag-hover拖动悬停时应用于项元素的 USS 类名。

Unity 将此 USS 类添加到拖动的列表元素中。必须将该属性设置为 true 才能拖动项。应用于此类的任何样式都会影响可视化树中样式表旁边或下方的每个 BaseVerticalCollectionView 项。
BaseVerticalCollectionView.reorderable
itemSelectedVariantUssClassName.unity-collection-view__item--selectedBaseVerticalCollectionView 中选定项元素的 USS 类名。

Unity 将此 USS 类添加到 BaseVerticalCollectionView 中的每个选定元素中。该属性确定是否可以选择零个、一个或多个元素。应用于此类的任何样式都会影响可视化树中样式表旁边或下方的每个 BaseVerticalCollectionView 项。
BaseVerticalCollectionView.selectionType
itemAlternativeBackgroundUssClassName.unity-collection-view__item--alternative-backgroundBaseVerticalCollectionView 中奇数行的 USS 类名。

Unity 将此 USS 类添加到 BaseVerticalCollectionView 中的每个奇数项,当该属性设置为 或 时。当该属性设置为其中任一值时,奇数项的背景颜色与偶数项的背景色不同。此 USS 类用于区分奇数项和偶数项。当该属性设置为 时,不会添加 USS 类,并且依赖于它的任何样式或行为都将失效。
BaseVerticalCollectionView.showAlternatingRowBackgroundContentOnlyAllshowAlternatingRowBackgroundshowAlternatingRowBackgroundNone
listScrollViewUssClassName.unity-collection-view__scroll-viewBaseVerticalCollectionView 中滚动视图的 USS 类名。

Unity 将此 USS 类添加到 BaseVerticalCollectionView 的滚动视图中。应用于此类的任何样式都会影响位于可视化树中样式表旁边或下方的每个 BaseVerticalCollectionView 滚动视图。
disabledUssClassName.unity-disabled本地禁用元素的 USS 类名。

您还可以使用检查器中的“匹配选择器”部分或 UI 工具包调试器来查看哪些 USS 选择器在其层次结构的每个级别影响 的组件。VisualElement

3D建模学习工作室整理翻译,转载请注明出处!

上一篇:Unity3D :UXML元素长场 (mvrlink.com)

下一篇:Unity3D :UXML 元素 MaskField (mvrlink.com)

NSDT场景编辑器 | NSDT 数字孪生 | GLTF在线编辑器 | 3D模型在线转换 | UnrealSynth虚幻合成数据生成器 | 3D模型自动纹理化工具
2023 power by nsdt©鄂ICP备2023000829号