版本:Unity 6 (6000.0)
语言:English
UXML 元素 RenderingLayerMaskField
UXML 元素 Scroller

UXML 元素 ScrollView

ScrollView 在可滚动区域内显示其内容。当您向 ScrollView 添加内容时,内容将添加到 ScrollView 的内容容器 (#unity-content-container) 中。

创建 ScrollView

您可以使用 UI(用户界面) 允许用户与您的应用程序交互。Unity 目前支持三种 UI 系统。 更多信息
参见 术语表
构建器、UXML 或 C# 创建 ScrollView。以下 C# 示例创建了一个具有水平和垂直滚动功能的 ScrollView,其中包含一个标题标签和若干个切换元素。

var scrollView = new ScrollView(ScrollViewMode.VerticalAndHorizontal);
scrollView.style.width = 250;
scrollView.style.height = 400;

scrollView.Add(new Label("List of checkboxes:"));

for (int i = 0; i < 100; ++i)
{
    var toggle = new UnityEngine.UIElements.Toggle()
    { text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." };
    scrollView.Add(toggle);
}

管理滚动条可见性

您可以指定滚动条移动的方向、水平或垂直滚动条是否可见,以及控制滚动条的速度。

要在 UI 构建器中设置滚动条移动的方向,在 ScrollView 的 检查器一个 Unity 窗口,显示有关当前选定 GameObject、资产或项目设置的信息,允许您检查和编辑值。 更多信息
参见 术语表
窗口中,为 模式 选择以下选项之一:

  • 垂直 (默认)
  • 水平
  • 垂直和水平

要在 UI 构建器中设置滚动条的可见性,在 ScrollView 的检查器窗口中,为 水平滚动条可见性垂直滚动条可见性 选择以下选项之一:

  • 自动 (默认)
  • 始终可见
  • 隐藏

控制滚动速度

要控制滚动速度,请在 UI 构建器、UXML 或 C# 代码中调整以下属性的值。值越高,滚动速度越快。

  • horizontal-page-size 控制使用键盘或屏幕上的滚动条按钮(箭头和手柄)进行水平滚动时的速度。速度通过将页面大小乘以指定的值来计算。例如,值为 2 表示每次滚动移动覆盖的距离等于页面宽度的两倍。
  • vertical-page-size 控制使用键盘或屏幕上的滚动条按钮(箭头和手柄)进行垂直滚动时的速度。速度通过将页面大小乘以指定的值来计算。例如,值为 2 表示每次滚动移动覆盖的距离等于页面长度的两倍。
  • mouse-wheel-scroll-size 控制使用鼠标滚轮滚动时的速度。速度通过将指定的值除以 18 来计算,这对应于默认的行高 18px。例如,如果将值设置为 36,则每次滚动移动覆盖的距离相当于两行内容。

注意:您还可以覆盖 USS 内置变量 –unity-metrics-single_line-height 来控制使用鼠标滚轮滚动时的速度。mouse-wheel-scroll-size 属性优先于 –unity-metrics-single_line-height USS 变量。

在 ScrollView 内包装元素

您可以在 ScrollView 内包装 视觉元素视觉树的一个节点,它实例化或派生自 C# VisualElement 类。您可以设置外观样式、定义行为,并将其作为 UI 的一部分显示在屏幕上。 更多信息
参见 术语表
,以便元素在一行中显示。如果一行已满,则元素将继续在下一行显示。

要在 ScrollView 内包装视觉元素,请将 ScrollView 的内容容器 flex-direction 设置为 row,并将 flex-wrap 设置为 wrap

在 USS 中:

.unity-scroll-view__content-container {
    flex-direction: row;
    flex-wrap: wrap;
}

在 C# 中:

scrollview.contentContainer.style.flexDirection = FlexDirection.Row;
scrollview.contentContainer.style.flexWrap = Wrap.Wrap;

在 ScrollView 内换行元素的文本

要在 ScrollView 内换行元素的文本,例如 Label 元素的文本,请执行以下操作:

  1. 使用以下任何方法设置 Label 元素的样式:
    • 在 UI 构建器中,在 Label 的检查器窗口中,选择 文本 > 换行 > 正常
    • 在 USS、UXML 或 C# 中,对 Label 元素应用样式 white-space: normal;
  2. 在 ScrollView 内创建一个 VisualElement 作为容器。ScrollView 内的原始容器元素没有设置边界(大小无限),因此文本不会正确换行。此容器 VisualElement 为文本在其中换行提供了有限的大小。
  3. 将 Label 添加到 VisualElement 容器。

示例

C# 类和命名空间

C# 类ScrollView
命名空间UnityEngine.UIElements
基类VisualElement

成员 UXML 属性

此元素具有以下成员属性:

名称 类型 描述
elastic-animation-interval-ms long 弹性弹簧动画执行之间最短时间(以毫秒为单位)。
elasticity float 当用户尝试滚动到滚动视图边界之外时使用的弹性量。

仅当 touchScrollBehavior 设置为 Elastic 时才使用弹性。
horizontal-page-size float 此属性控制使用键盘或屏幕上的滚动条按钮(箭头和手柄)进行水平滚动时的速度,基于页面大小。

滚动时,页面大小将应用于每次滚动步骤的偏移量,因此最终偏移量将是页面大小乘以步骤数。SA: BaseSlider_1::ref::pageSize。
horizontal-scroller-visibility UIElements.ScrollerVisibility 指定水平滚动条是否可见。
mode UIElements.ScrollViewMode 控制 ScrollView 如何允许用户滚动内容。ScrollViewMode 默认值为 ScrollViewMode.Vertical。写入此属性会根据 ScrollViewMode 的指定值修改 ScrollView 的类列表。当值更改时,匹配旧值的类列表将被删除,匹配新值的类列表将被添加。
mouse-wheel-scroll-size float 此属性仅在使用鼠标滚轮滚动时控制滚动速度,基于页面大小。它优先于 –unity-metrics-single_line-height USS 变量。
nested-interaction-kind UIElements.ScrollView+NestedInteractionKind 当滚动到达嵌套 ScrollView 的限制时使用的行为。
scroll-deceleration-rate float 控制用户使用触摸交互滚动后滚动运动减慢的速度。

减速度是每秒的速度降低。值为 0.5 表示每秒速度减半。值为 0 表示立即停止滚动。
vertical-page-size float 此属性控制使用键盘或屏幕上的滚动条按钮(箭头和手柄)进行垂直滚动时的速度,基于页面大小。

速度通过将页面大小乘以指定的值来计算。例如,值为 2 表示每次滚动移动覆盖的距离等于页面宽度的两倍。
vertical-scroller-visibility UIElements.ScrollerVisibility 指定垂直滚动条是否可见。

继承的 UXML 属性

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

名称 类型 描述
focusable boolean 如果元素可以聚焦,则为真。
tabindex int 用于在焦点环中对可聚焦元素进行排序的整数。必须大于或等于零。

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

名称 类型 描述
content-container string 子元素将添加到其中,通常与元素本身相同。
data-source Object 为此 VisualElement 分配数据源,覆盖任何继承的数据源。此数据源由所有子元素继承。
data-source-path string 从数据源到值的路径。
data-source-type System.Type 可分配给此 VisualElement 的数据源的可能类型。

此信息仅由 UI 构建器用作提示,以便在设计时无法指定有效数据源时,为数据源路径字段提供一些自动完成。
language-direction UIElements.LanguageDirection 指示元素文本的方向性。该值将传播到元素的子元素。

将 languageDirection 设置为 RTL 会通过反转文本并适当地处理换行和单词换行来添加对从右到左 (RTL) 的基本支持。但是,它不提供全面的 RTL 支持,因为这需要文本整形,包括字符的重新排序和 OpenType 字体功能支持。全面的 RTL 支持计划在未来的更新中提供,这将涉及用于处理语言、脚本和字体功能规范的其他 API。

为了增强此属性的 RTL 功能,用户可以探索 Unity Asset Store 中可用的第三方插件,并使用 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 将禁用持久性。有关更多信息,请参阅 视图数据持久性

USS 类

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

C# 属性 USS 选择器 描述
ussClassName .unity-scroll-view 此类型元素的 USS 类名称。
viewportUssClassName .unity-scroll-view__content-viewport 此类型元素中 视口 元素的 USS 类名称。
horizontalVariantViewportUssClassName .unity-scroll-view__content-viewport--horizontal 当视口处于水平模式时添加的 USS 类名称。ScrollViewMode.Horizontal
verticalVariantViewportUssClassName .unity-scroll-view__content-viewport--vertical 视口处于垂直模式时添加的 USS 类名。ScrollViewMode.Vertical
verticalHorizontalVariantViewportUssClassName .unity-scroll-view__content-viewport--vertical-horizontal 视口同时处于水平和垂直模式时添加的 USS 类名。ScrollViewMode.VerticalAndHorizontal
contentAndVerticalScrollUssClassName .unity-scroll-view__content-and-vertical-scroll-container 此类型元素中内容元素的 USS 类名。
contentUssClassName .unity-scroll-view__content-container 此类型元素中内容元素的 USS 类名。
horizontalVariantContentUssClassName .unity-scroll-view__content-container--horizontal ContentContainer 处于水平模式时添加的 USS 类名。ScrollViewMode.Horizontal
verticalVariantContentUssClassName .unity-scroll-view__content-container--vertical ContentContainer 处于垂直模式时添加的 USS 类名。ScrollViewMode.Vertical
verticalHorizontalVariantContentUssClassName .unity-scroll-view__content-container--vertical-horizontal ContentContainer 同时处于水平和垂直模式时添加的 USS 类名。ScrollViewMode.VerticalAndHorizontal
hScrollerUssClassName .unity-scroll-view__horizontal-scroller 此类型元素中水平滚动条的 USS 类名。
vScrollerUssClassName .unity-scroll-view__vertical-scroller 此类型元素中垂直滚动条的 USS 类名。
horizontalVariantUssClassName .unity-scroll-view--horizontal ScrollView 处于水平模式时添加的 USS 类名。ScrollViewMode.Horizontal
verticalVariantUssClassName .unity-scroll-view--vertical ScrollView 处于垂直模式时添加的 USS 类名。ScrollViewMode.Vertical
verticalHorizontalVariantUssClassName .unity-scroll-view--vertical-horizontal ScrollView 同时处于水平和垂直模式时添加的 USS 类名。ScrollViewMode.VerticalAndHorizontal
scrollVariantUssClassName .unity-scroll-view--scroll
disabledUssClassName .unity-disabled 本地禁用元素的 USS 类名。

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

其他资源

UXML 元素 RenderingLayerMaskField
UXML 元素 Scroller