Version: 6000.3
语言: 中文
浮点字段
梯度场

插页

折叠是 UI 的可折叠部分。当您单击折叠的标题时,折叠会隐藏或显示它包含的元素。

插页
插页

创建折叠

折叠具有以下元素:

  • 标签:可用作折叠的名称的标签。
  • 切换:单击切换以展开或折叠容器子元素。它的样式看起来像箭头,而不是默认复选框。当容器折叠时,箭头指向右侧。当容器展开时,箭头指向下方。
  • 容器:容器包含视觉元素实例化或派生自 C# 的可视化树的节点VisualElement类。您可以设置外观样式、定义行为并将其作为 UI 的一部分显示在屏幕上。更多信息
    请参阅术语表
    切换折叠时要显示或隐藏的内容。

您可以将元素添加到折叠的容器中,显示或隐藏功能会自动工作。

以下UI文档在其容器中创建了一个包含两个按钮的折叠。当您切换折叠时,这两个按钮会显示或隐藏。

<ui:UXML xmlns:ui="UnityEngine.UIElements" xmlns:uie="UnityEditor.UIElements" xsi="http://www.w3.org/2001/XMLSchema-instance" engine="UnityEngine.UIElements" editor="UnityEditor.UIElements" noNamespaceSchemaLocation="../../UIElementsSchema/UIElements.xsd" editor-extension-mode="False">
    <ui:Foldout text="Foldout" name="MyFoldout" value="true">
        <ui:Button text="First item" />
        <ui:Button text="Second item" />
    </ui:Foldout>
</ui:UXML>

响应用户作

Foldout 及其 Toggle 子元素响应 Change 事件。切换隐藏或显示折叠容器。

你可以将 Foldout 绑定到布尔变量,或通过INotifyValueChanged<bool>接口。

例子

以下 C# 代码片段创建 Foldout 并检查折叠是否已展开:

// Create a new foldout, add two elements to it and add it to the container
var cSharpFoldout = new Foldout {text = "Elements"};
cSharpFoldout.Add(new Label("Indented Label"));
cSharpFoldout.Add(new Slider("Indented Slider", 0, 100));
container.Add(cSharpFoldout);

cSharpFoldout.RegisterValueChangedCallback(e =>
{
    // Check whether the foldout is expanded
    if (cSharpFoldout.value)
    {
        Debug.Log("Foldout is expanded");
    }
    else
    {
        Debug.Log("Foldout is collapsed");
    }
});

C# 基类和命名空间

C# 类Foldout
命名空间UnityEngine.UIElements
基类BindableElement

成员 UXML 属性

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

名字 类型 描述
focusable boolean 可聚焦
text string 切换的标签文本。
toggle-on-label-click boolean 是否在用户单击标签时切换折叠状态。
value boolean 这是折叠切换的状态。如果Foldout打开且其内容可见,如果折叠关闭且其内容隐藏,则为 false。

继承的UXML属性

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

名字 类型 描述
binding-path string 要绑定的目标属性的路径。
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-foldout 折叠图元的 USS 类名称。

Unity 将此 USS 类添加到
Foldout.应用于此类的任何样式都会影响位于可视化树中样式表旁边或下方的每个折叠。
toggleUssClassName .unity-foldout__toggle 在折叠元素中切换子元素的 USS 类名称。

Unity 将此 USS 级添加到
Toggle每个Foldout.应用于此类的任何样式都会影响可视化树中位于样式表旁边或下方的每个 Toggle 子元素。
contentUssClassName .unity-foldout__content 折叠中内容元素的 USS 类名称。

Unity 将此 USS 级添加到
VisualElement包含要显示或隐藏的元素。应用于此类的任何样式都会影响位于可视化树中样式表旁边或下方的每个折叠容器。
inputUssClassName .unity-foldout__input 折叠中 Label 元素的 USS 类名称。

Unity 将此 USS 级添加到
VisualElement其中包含Toggleinput 元素。应用于此类的任何样式都会影响位于可视化树中样式表旁边或下方的每个折叠容器。
checkmarkUssClassName .unity-foldout__checkmark 折叠中 Label 元素的 USS 类名称。

Unity 将此 USS 级添加到
VisualElement表示Toggle每个Foldout.应用于此类的任何样式都会影响位于可视化树中样式表旁边或下方的每个折叠容器。
textUssClassName .unity-foldout__text 折叠中 Label 元素的 USS 类名称。

Unity 将此 USS 级添加到
LabelToggle每个Foldout.应用于此类的任何样式都会影响位于可视化树中样式表旁边或下方的每个折叠容器。
disabledUssClassName .unity-disabled 本地禁用元素的 USS 级名称。

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

其他资源

浮点字段
梯度场