版本:Unity 6 (6000.0)
语言:英语
UXML 元素 TemplateContainer
UXML 元素 ToggleButtonGroup

UXML 元素 Toggle

Toggle 包含一个图像和一个标签。就像其他标准的UI(用户界面) 允许用户与您的应用程序交互。Unity 目前支持三种 UI 系统。 更多信息
参见 术语表
工具包控件(如 Button)一样,Toggle 附带了一个 Clickable 操作器,该操作器注册到 MouseUpEventPointerUpEvent。当其中一个事件触发操作器时,Toggle 的值将从 true 更改为 false 或从 false 更改为 true。您可以读取或设置 Toggle 的当前值。您还可以将 Toggle 绑定到 Boolean 变量。

您可以根据其他条件(例如下拉列表中的选择或启用的选项)显示或隐藏元素。条件 UI 的一个示例是 Unity Camera一个组件,用于创建场景中特定视点的图像。输出要么绘制到屏幕上,要么作为纹理捕获。 更多信息
参见 术语表
Inspector一个 Unity 窗口,显示有关当前选定的 GameObject、资产或项目设置的信息,允许您检查和编辑值。 更多信息
参见 术语表
。当您激活“物理相机”模式时,它会显示其他选项。

注意:要将元素与 Inspector 窗口中的其他字段对齐,只需将 .unity-base-field__aligned USS 类应用于它。有关更多信息,请参阅 BaseField

创建 Toggle

您可以使用 UI Builder、UXML 或 C# 创建 Toggle。

以下 C# 示例创建了一个带有特定标签的 Toggle

Toggle myToggle = new Toggle("Click me");

设置 Toggle 的样式

默认情况下,Toggle 控件显示为复选框。您可以应用样式使其看起来像一个典型的切换开关。

要设置切换复选框的样式,请使用 .unity-toggle__input.unity-toggle__checkmark 样式属性。例如,如果您已将名为 className 的类应用于 Toggle。以下 USS 更改了选择或清除切换时复选框的背景图像

/* Set the background image when the checkbox is selected. */
.className:checked > .unity-toggle__input > .unity-toggle__checkmark {
    background-image: url("path/to/image-file");
}

/* Set the background image When the checkbox is not selected. */
.className > .unity-toggle__input > .unity-toggle__checkmark {
    background-image: url("path/to/image-file"); 
}

示例

以下 UXML 示例创建了一个 Toggle

<UXML xmlns="UnityEngine.UIElements" xmlns:uie="UnityEditor.UIElements">
    <Toggle label="UXML Field" name="the-uxml-field" />
</UXML>

以下 C# 示例说明了 Toggle 的一些可自定义功能

/// <sample>
// Get a reference to the field from UXML and assign a value to it.
var uxmlField = container.Q<Toggle>("the-uxml-field");
uxmlField.value = true;

// Create a new field, disable it, and give it a style class.
var csharpField = new Toggle("C# Field");
csharpField.value = false;
csharpField.SetEnabled(false);
csharpField.AddToClassList("some-styled-field");
csharpField.value = uxmlField.value;
container.Add(csharpField);

// Mirror the value of the UXML field into the C# field.
uxmlField.RegisterCallback<ChangeEvent<bool>>((evt) =>
{
    csharpField.value = evt.newValue;
});
/// </sample>

要在 Unity 中实时尝试此示例,请转到 窗口 > UI 工具包 > 示例

有关更多示例,请参阅以下内容

C# 基类和命名空间

C# 类Toggle
命名空间UnityEngine.UIElements
基类BaseBoolField

继承的 UXML 属性

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

名称 类型 描述
binding-path 字符串 要绑定的目标属性的路径。
focusable 布尔值 如果元素可以聚焦,则为真。
label 字符串 表示将在字段旁边显示的标签的字符串。
tabindex 整数 用于在焦点环中对可聚焦元素进行排序的整数。必须大于或等于零。
text 字符串 出现在 BaseBoolField 之后的可选项文本。

如果不存在 Label,Unity 会自动创建一个。
toggle-on-label-click 布尔值 用户单击标签时是否激活切换。
value 布尔值 与字段关联的值。

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

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

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

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

为了增强此属性的 RTL 功能,用户可以探索 Unity Asset Store 中可用的第三方插件并使用 ITextElementExperimentalFeatures.renderedText
name 字符串 此 VisualElement 的名称。

使用此属性编写针对特定元素的 USS 选择器。标准做法是为元素指定唯一名称。
picking-mode UIElements.PickingMode 确定此元素是否可以在 mouseEvents 或 IPanel.Pick 查询期间被拾取。
style 字符串 设置 VisualElement 样式值。
tooltip 字符串 在用户将鼠标悬停在元素上一段时间后,在信息框内显示的文本。这仅在编辑器 UI 中受支持。
usage-hints UIElements.UsageHints 指定 VisualElement 高级预期使用模式的提示值的组合。此属性仅在 VisualElement 尚未成为 Panel 的一部分时才能设置。一旦成为 Panel 的一部分,此属性实际上就变为只读,尝试更改它将引发异常。正确 UsageHints 的规范驱动系统根据预期的使用模式做出更好的决策,关于如何处理或加速某些操作。请注意,这些提示不会影响行为或视觉结果,只会影响面板及其内部元素的整体性能。建议始终考虑指定正确的 UsageHints,但请记住,在某些情况下,某些 UsageHints 可能会在内部被忽略(例如,由于目标平台上的硬件限制)。
view-data-key 字符串 用于视图数据持久性,例如树展开状态、滚动位置或缩放级别。

此键用于从视图数据存储中保存和加载视图数据。如果您不设置此键,则关联的 VisualElement 将禁用持久性。有关更多信息,请参阅 视图数据持久性

USS 类

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

C# 属性 USS 选择器 描述
ussClassName .unity-toggle Toggle 元素的 USS 类名称。

Unity 将此 USS 类添加到 Toggle 元素的每个实例。应用于此类的任何样式都会影响视觉树中样式表旁边或下方的每个 Toggle。
labelUssClassName .unity-toggle__label Toggle 元素中标签的 USS 类名称。

如果 Toggle 具有标签,则 Unity 会将此 USS 类添加到 ToggleLabel 子元素。
inputUssClassName .unity-toggle__input Toggle 元素中输入元素的 USS 类名称。

Unity 将此 USS 类添加到 Toggle 的输入子元素。输入子元素提供对操作器的响应。
noTextVariantUssClassName .unity-toggle--no-text 没有文本的 Toggle 元素的 USS 类名称。

如果 Toggle 没有标签,则 Unity 会将此 USS 类添加到 Toggle
checkmarkUssClassName .unity-toggle__checkmark Toggle 元素中图像的 USS 类名称。

Unity 将此 USS 类添加到包含复选标记图像的 Toggle 的 Image 子元素。
textUssClassName .unity-toggle__text Toggle 元素中文本元素的 USS 类名称。

Unity 将此 USS 类添加到 Toggle 的 Text 子元素。
mixedValuesUssClassName .unity-toggle__mixed-values 具有混合值的 Toggle 元素的 USS 类名称

Toggle 具有混合值时,Unity 会将此 USS 类添加到 Toggle 的复选标记。
ussClassName .unity-base-field 此类型元素的 USS 类名称。
labelUssClassName .unity-base-field__label 此类型元素中标签的 USS 类名称。
inputUssClassName .unity-base-field__input 此类型元素中输入元素的 USS 类名称。
noLabelVariantUssClassName .unity-base-field--no-label 此类型元素的 USS 类名称,当没有标签时。
labelDraggerVariantUssClassName .unity-base-field__label--with-dragger 此类型元素中标签的 USS 类名称,当在其上附加了拖动器时。
mixedValueLabelUssClassName .unity-base-field__label--mixed-value 显示混合值的元素的 USS 类名称
alignedFieldUssClassName .unity-base-field__aligned 在 Inspector 元素中对齐的元素的 USS 类名称
disabledUssClassName .unity-disabled 本地禁用元素的 USS 类名称。

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

其他资源

UXML 元素 TemplateContainer
UXML 元素 ToggleButtonGroup