Version: 6000.3
语言: 中文
渲染层遮罩字段
滚动器

滚动视图

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

创建 ScrollView

你可以使用 UI Builder、UXML 或 C# 创建 ScrollView。以下 C# 示例创建具有水平和垂直滚动功能的 ScrollView,其中包含标题 Label 和许多 Toggle 元素。它还添加了一个按钮,单击该按钮时,使用垂直滚动器将列表向下滚动一页。

// Create a ScrollView with vertical and horizontal scrolling enabled
// and set its width and height.
var scrollView = new ScrollView(ScrollViewMode.VerticalAndHorizontal);
scrollView.style.width = 250;
scrollView.style.height = 400;

// Add a label and 100 toggle elements to the ScrollView.
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);
}

// Access the vertical scroller.
var verticalScroller = scrollView.verticalScroller;

// Add a button to scroll down one page when clicked.
var scrollDownButton = new Button(() =>
{
    verticalScroller.ScrollPageDown(50f);
})
{ text = "Scroll Down One Page" };

uiDocument.rootVisualElement.Add(scrollView);
uiDocument.rootVisualElement.Add(scrollDownButton);

管理滚动条

您可以指定滚动条移动的滚动模式,水平滚动条是可见的还是垂直滚动条,并控制滚动条的速度。

滚动条模式和可见性

要在 UI Builder 中设置滚动条移动的滚动模式,请在检查器一个 Unity 窗口,显示有关当前选定游戏对象、资产或项目设置的信息,允许您检查和编辑值。更多信息
请参阅术语表
窗口中,为 Mode 选择以下选项之一:

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

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

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

控制滚动速度

若要控制滚动速度,请在UI Builder、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-heightUSS 变量。

滚动到最后

若要滚动到 ScrollView 的末尾,请将 scrollOffset 属性设置为垂直滚动器的最大值。这会在初始化 UI 时将内容滚动到末尾。

// Set the scroll offset to the bottom of the ScrollView.
// This scrolls to the bottom when the UI is initialized.
scrollView.scrollOffset = new Vector2(0, scrollView.verticalScroller.highValue);

将元素包装在 ScrollView 中

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

若要将视觉元素包装在 ScrollView 中,请将 ScrollView 的内容容器flex-directionrowflex-wrapwrap.

在 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 Builder 的 Label 的 Inspector 窗口中,选择 Text > Wrap > normal
    • 应用样式white-space: normal;添加到 USS、UXML 或 C# 中的 Label 元素。
  2. 在 ScrollView 中创建 VisualElement 作为容器。ScrollView 中的原始容器元素未设置边界(大小无限),因此文本无法正确换行。此容器 VisualElement 为要换行的文本提供了有限大小。
  3. 将标签添加到 VisualElement 容器。

例子

C# 类和命名空间

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

成员 UXML 属性

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

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

弹性仅在以下情况下使用
touchScrollBehavior设置为 Elastic。
horizontal-page-size float 此属性根据页面的大小控制使用键盘或屏幕滚动条按钮(箭头和手柄)时水平滚动的速度。
滚动
时,页面大小将应用于每个滚动步骤的偏移量,因此最终偏移量将是页面大小乘以步数。
horizontal-scroller-visibility UIElements.ScrollerVisibility 指定水平滚动条是否可见。
mode UIElements.ScrollViewMode 控制 ScrollView 允许用户滚动内容的方式。ScrollViewMode

默认值为ScrollViewMode.Vertical.写入此属性会根据指定的值修改 ScrollView 的类列表ScrollViewMode.当值发生变化时,将删除与旧值匹配的类列表,并添加与新值匹配的类列表。
mouse-wheel-scroll-size float 此属性仅在使用鼠标滚轮时根据页面大小控制滚动速度。

此属性优先于
--unity-metrics-single_line-heightUSS 变量。如果同时设置了属性和变量,则使用属性值。

以下示例演示了如何使用
mouseWheelScrollSize属性来控制使用鼠标滚轮时滚动的“速度”。请注意选择不同值时感觉的差异:
nested-interaction-kind UIElements.ScrollView+NestedInteractionKind 滚动达到嵌套限制时要使用的行为ScrollView.
scroll-deceleration-rate float 控制用户使用触摸交互滚动后滚动移动减慢的速率。

减速率是每秒的减速。值为 0.5 时,每秒速度减半。值为 0 会立即停止滚动。
show-horizontal-scroller boolean 过时。用ScrollView.horizontalScrollerVisibility相反。
show-vertical-scroller boolean 过时。用ScrollView.verticalScrollerVisibility相反。
touch-scroll-type UIElements.ScrollView+TouchScrollBehavior 当用户尝试使用触摸交互滚动超过 ScrollView 内容的边界时要使用的行为。
vertical-page-size float 此属性根据页面的大小控制使用键盘或屏幕滚动条按钮(箭头和手柄)时的垂直滚动速度。

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

继承的UXML属性

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

名字 类型 描述
focusable boolean 如果为 false,则不会聚焦元素。

只有当元素的 canGrabFocus 属性为 true 时,才能聚焦该元素。
tabindex int 用于对焦点环中的可聚焦元素进行排序的整数。必须大于或等于零。

设置
tabIndex值小于0(例如,−1) 从焦点环和选项卡导航中删除元素。

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

名字 类型 描述
content-container string 添加子元素的逻辑容器。如果将子项添加到此元素,则该子项将改为添加到此元素的内容容器中。

迭代
VisualElement.Children元素的,则使用元素的内容容器层次结构而不是元素本身。这可能会导致意外结果,例如,如果元素不直接位于内容容器的层次结构中,则导航事件会忽略元素。指IFocusRing了解更多信息。

如果内容容器与元素本身相同,则子元素将直接添加到元素中。对于大多数元素来说都是如此,但可以被更复杂的类型覆盖。

ScrollView例如,具有与自身不同的内容容器。在这种情况下,添加到滚动视图的子元素将改为添加到其内容容器元素中。虽然物理父级 (VisualElement.Hierarchy.parent) 是滚动视图的内容容器元素,它们的逻辑父元素 (VisualElement.parent) 仍然引用滚动视图本身。由于滚动视图的一些可聚焦子项不是其逻辑层次结构的一部分,例如Scroller元素,在使用顺序导航时,默认情况下不考虑这些可聚焦的子项。如果默认导航规则与您的需求不符,请参阅如何更改接下来关注的元素,了解解决方法解决方案的示例。
data-source Object 将数据源分配给此 VisualElement,该 VisualElement 将替代任何继承的数据源。此数据源由所有子级继承。
data-source-path string 从数据源到值的路径。
data-source-type System.Type 可分配给此 VisualElement 的可能数据源类型。
当设计时无法指定有效数据源时,UI 生成器仅将
此信息用作提示,以对数据源路径字段进行一些补全。
enabled boolean 如果VisualElement在本地启用。
如果 VisualElement 的父级之一隐式禁用,则
不会更改此标志。要验证这一点,请使用
enabledInHierarchy.
language-direction UIElements.LanguageDirection 指示元素文本的方向性。该值将传播到元素的子项。

设置
languageDirectionRTL只能获得文本反转等基本的 RTL 支持。要获得更全面的 RTL 支持,例如换行、自动换行或文本整形,您必须启用高级文本生成器
name string 此 VisualElement 的名称。

使用此属性可以编写面向特定元素的 USS 选择器。标准做法是为元素指定一个唯一的名称。
picking-mode UIElements.PickingMode 确定此元素是可以作为指针事件的目标还是由IPanel.Pick查询。

如果出现以下情况,则无法拾取元素:

- 它们不可见- 它们的
style.display设置为DisplayStyle.None

拾取模式为PickingMode.Ignore永远不要接收悬停伪状态。
style string VisualElement.
返回
的样式数据是根据 USS 文件或在 C# 中写入此对象的内联样式计算得出的,不表示完全解析的样式,例如 VisualElement 的最终高度和宽度。要访问这些完全解析的样式,请使用
resolvedStyle.



有关如何使用此属性和所有受支持的 USS 属性的信息,请参阅在 C# 脚本中应用样式USS 属性参考手册页。
tooltip string 用户将鼠标悬停在元素上一小段时间后,要在信息框内显示的文本。这仅在编辑器UI中受支持。
usage-hints UIElements.UsageHints 提示值的组合,用于指定VisualElement.只有当VisualElement还不是Panel.曾经是Panel,则此属性实际上变为只读,尝试更改它将引发异常。适当的规范UsageHints驱动系统根据预期的使用模式就如何处理或加速某些作做出更好的决策。请注意,这些提示不会影响行为或视觉结果,而只会影响面板和其中元素的整体性能。建议始终考虑指定适当的UsageHints,但请记住,某些UsageHints在某些情况下(例如,由于目标平台上的硬件限制),可能会在内部忽略。
view-data-key string 用于视图数据持久性,例如树展开状态、滚动位置或缩放级别。

此键用于从视图数据存储中保存和加载视图数据。如果未设置此键,则会禁用关联的持久性
VisualElement.有关更多信息,请参阅 Unity 手册中的查看数据持久性

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 级名称。

您还可以使用 Inspector 或 UI Toolkit Debugger 中的 Matching Selectors 部分来查看哪些 USS 选择器会影响VisualElement在其层次结构的各个层面。

其他资源

渲染层遮罩字段
滚动器