版本:Unity 6 (6000.0)
语言:英语
UXML 元素 FloatField
UXML 元素 GradientField

UXML 元素 Foldout

Foldout 是 UI(用户界面) 允许用户与您的应用程序进行交互。Unity 目前支持三种 UI 系统。 更多信息
参见 词汇表
中的可折叠部分。当您点击 Foldout 的标题时,Foldout 会隐藏或显示它包含的元素。

Foldout
Foldout

创建 Foldout

Foldout 具有以下元素

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

您可以将元素添加到 Foldout 的容器中,显示或隐藏功能会自动生效。

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

<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 子元素会响应 更改事件。Toggle 会隐藏或显示 Foldout 容器。

您可以将 Foldout 绑定到布尔变量,或通过 INotifyValueChanged<bool> 接口访问其值。

示例

以下 C# 代码片段创建了一个 Foldout,并检查 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 属性

此元素具有以下成员属性

名称 类型 描述
text string 切换按钮的标签文本。
toggle-on-label-click boolean 用户点击标签时是否切换 Foldout 状态。
value boolean 这是 Foldout 切换按钮的状态。如果 Foldout 打开且其内容可见,则为 true;如果 Foldout 关闭且其内容隐藏,则为 false。

继承的 UXML 属性

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

名称 类型 描述
binding-path string 要绑定的目标属性的路径。
focusable boolean 如果元素可以获得焦点,则为 true。
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-foldout Foldout 元素的 USS 类名。

Unity 会将此 USS 类添加到每个 Foldout 实例中。应用于此类的任何样式都会影响可视化树中样式表旁边或下方的所有 Foldout。
toggleUssClassName .unity-foldout__toggle Foldout 元素中 Toggle 子元素的 USS 类名。

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

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

Unity 会将此 USS 类添加到包含 Toggle 输入元素的 VisualElement 中。应用于此类的任何样式都会影响可视化树中样式表旁边或下方的所有 Foldout 容器。
checkmarkUssClassName .unity-foldout__checkmark Foldout 中 Label 元素的 USS 类名。

Unity 会将此 USS 类添加到表示每个 FoldoutToggle 子元素的复选标记的 VisualElement 中。应用于此类的任何样式都会影响可视化树中样式表旁边或下方的所有 Foldout 容器。
textUssClassName .unity-foldout__text Foldout 中 Label 元素的 USS 类名。

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

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

其他资源

UXML 元素 FloatField
UXML 元素 GradientField