Skip to content

Toggle

image-20260710195127431image-20260710201826435Unity_UI_Toggle_Inspector_Expanded_Guide

1. Rect Transform

截图中:

  • 锚点:center / middle
  • Position:0, 0, 0
  • Width:160
  • Height:20
  • Pivot:0.5, 0.5
  • Scale:1, 1, 1

说明这个 Toggle 位于父级中心,尺寸为 160 × 20

Rect Transform 决定:

  • Toggle 的位置
  • Toggle 的点击区域
  • Toggle 的宽高
  • Toggle 的旋转和缩放

2. Interactable

截图中 Interactable 已勾选。

  • 开启:Toggle 可以点击。
  • 关闭:Toggle 不接受输入,并使用 Disabled Color 显示。

如果 Toggle 点击没有反应,首先检查:

c
Interactable 是否开启

3. Transition

截图当前为:

c
Color Tint

它会根据 Toggle 当前状态改变目标图形的颜色。

Color Tint

主要状态包括:

  • Normal Color:正常状态。
  • Highlighted Color:鼠标悬停或获得焦点。
  • Pressed Color:鼠标按下或触摸按下。
  • Selected Color:被键盘或手柄导航选中。
  • Disabled Color:不可交互状态。
  • Color Multiplier:颜色强度。
  • Fade Duration:颜色过渡时间,截图中为 0.1 秒。

截图中的:

c
Target Graphic = Background (Image)

表示这些颜色会应用到 Background 这个 Image 上。

Transition 下拉选项

  • None:没有状态变化。
  • Color Tint:使用颜色变化。
  • Sprite Swap:不同状态替换不同 Sprite。
  • Animation:使用 Animator 制作状态动画。

Animation 模式需要:

  • Animator 组件
  • Animator Controller
  • Normal、Highlighted、Pressed、Disabled 等动画触发器

4. Toggle Transition

截图中为:

c
Fade

它控制勾选图标的出现方式:

  • None:勾选图标立即出现或消失。
  • Fade:勾选图标淡入或淡出。

5. Is On

截图中 Is On 已勾选,表示 Toggle 初始状态为打开。

c
toggle.isOn = true;
toggle.isOn = false;

读取当前状态:

c
bool currentState = toggle.isOn;

常见用途:

  • 音乐开关
  • 音效开关
  • 自动播放开关
  • 难度选项
  • 画质选项
  • 游戏设置

6. Graphic

截图中:

c
Graphic = Checkmark (Image)

表示这个 Image 是勾选图标。

Toggle 的工作逻辑可以理解为:

c
Is On = true  → 显示 Checkmark
Is On = false → 隐藏 Checkmark

如果 Toggle 状态确实发生变化,但画面上没有勾选图标,检查:

  • Graphic 是否引用了 Checkmark。
  • Checkmark 对象是否被禁用。
  • Checkmark 的颜色 Alpha 是否为 0。
  • Checkmark 是否被父级 Mask 裁剪。

7. Group

截图中的:

c
Group = Toggle (Toggle Group)

表示这个 Toggle 属于一个 Toggle Group。

Toggle Group 可以让多个 Toggle 互相排斥,常用于制作单选效果。

例如:

c
难度选择:
○ 简单
● 普通
○ 困难

同一个 Toggle Group 中,通常只能有一个 Toggle 处于 On 状态。

8. Toggle Group

截图下方的 Toggle Group 组件中:

c
Allow Switch Off = Off

含义是:

  • 当前选中的 Toggle 不能再次点击关闭。
  • 组中始终至少有一个 Toggle 为 On。

如果打开 Allow Switch Off

  • 再次点击当前 Toggle,可以将它关闭。
  • 组中允许所有 Toggle 都为 Off。

适用场景:

  • 角色选择
  • 游戏难度选择
  • 画质选择
  • 语言选择
  • 标签页切换
  • 单选菜单

需要注意:场景开始时如果多个 Toggle 都是 On,Toggle Group 不一定会自动立即修正,最好手动保证初始状态只有一个开启。Unity Toggle Group 手册

9. Navigation

截图中:

c
Navigation = Automatic

表示 Unity 会自动寻找相邻的 UI 控件,用键盘方向键、手柄方向键或 D-pad 切换焦点。

常见选项:

  • None:关闭键盘和手柄导航。
  • Horizontal:只允许左右移动。
  • Vertical:只允许上下移动。
  • Automatic:自动寻找邻近控件。
  • Explicit:手动指定上下左右的目标。
  • Visualize:在 Scene 窗口中显示导航连线。

键盘、手柄菜单建议使用 AutomaticExplicitUnity Navigation 手册

10. On Value Changed

截图中:

c
On Value Changed (Boolean)
空列表

表示 Toggle 状态改变时,目前还没有绑定任何事件。

点击右下角的 +,可以绑定一个脚本方法。

方法必须接收一个 bool 参数:

c
using UnityEngine;

public class ToggleDemo : MonoBehaviour
{
    public void OnMusicChanged(bool enabled)
    {
        Debug.Log("音乐开关状态:" + enabled);

        if (enabled)
        {
            Debug.Log("播放音乐");
        }
        else
        {
            Debug.Log("关闭音乐");
        }
    }
}

在 Inspector 中绑定方法后:

c
Toggle 状态改变

On Value Changed

OnMusicChanged(bool)

Toggle 会自动把当前状态传递给方法。Unity Toggle 手册

11. 常见问题

Toggle 不能点击:

  • 检查 Interactable
  • 检查 Canvas 是否有 Graphic Raycaster
  • 检查场景是否有 EventSystem
  • 检查前面是否有其他 UI 遮挡。

Toggle 没有勾选图标:

  • 检查 Graphic 是否引用 Checkmark。
  • 检查 Checkmark 是否激活。
  • 检查 Checkmark 的 Image 颜色和 Alpha。
  • 检查是否被 Mask 裁剪。

多个 Toggle 同时打开:

  • 检查它们是否引用同一个 Toggle Group。
  • 检查初始 Is On 设置。
  • 检查是否在脚本中反复设置状态。

Toggle 无法取消:

  • 这是因为 Toggle Group > Allow Switch Off 没有开启。
  • 单选菜单通常保持关闭。
  • 普通设置开关可以开启。

一句话记忆:

Toggle 管一个布尔值,Graphic 管勾选图,Transition 管状态反馈,Toggle Group 管互斥,On Value Changed 管脚本逻辑。

SVG 已重新预览检查,文字没有越框或重叠。

文章评价

读完这篇,留下你的看法

暂无审核通过的评价。

登录账号后才能评价。

本站访客数0总站访问量0本页访问量0