You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity:如何通过代码程序化切换ToggleGroup中的Toggle?

如何在Unity脚本中切换ToggleGroup的激活Toggle

嘿,这个需求很常见,我来给你捋清楚怎么实现~

ToggleGroup的核心特性就是互斥选中,所以你不需要手动去取消其他Toggle的状态,只需要把目标Toggle的isOn设为true,它就会自动帮你处理剩下的事。具体步骤如下:

方法一:直接引用目标Toggle(推荐,更直观)

首先在你的脚本里,除了ToggleGroup的引用,再添加对应难度的Toggle变量,然后在Inspector面板把对应的Toggle拖进去:

using UnityEngine;
using UnityEngine.UI;

public class DifficultyManager : MonoBehaviour
{
    public ToggleGroup difficultyToggleGroup;
    public Toggle easyDifficultyToggle; // 拖入简单难度的Toggle
    public Toggle normalDifficultyToggle; // 拖入普通难度的Toggle

    void Start()
    {
        // 从config获取ToggleGroup引用
        difficultyToggleGroup = config.difficulty;
        // 启动后自动切换到简单难度
        SetActiveDifficulty(easyDifficultyToggle);
    }

    // 封装一个通用的切换方法,方便后续调用
    private void SetActiveDifficulty(Toggle targetToggle)
    {
        // 空值判断避免报错
        if (targetToggle != null && difficultyToggleGroup != null)
        {
            targetToggle.isOn = true;
        }
    }
}

方法二:通过ToggleGroup查找目标Toggle(适合动态生成的Toggle)

如果你的Toggle是运行时动态创建的,或者不想手动拖引用,可以通过GetComponentsInChildren遍历ToggleGroup下的所有Toggle,再根据名字/标签找到目标:

using UnityEngine;
using UnityEngine.UI;
using System.Linq;

public class DifficultyManager : MonoBehaviour
{
    public ToggleGroup difficultyToggleGroup;

    void Start()
    {
        difficultyToggleGroup = config.difficulty;
        // 根据Toggle的名字查找(注意名字要和Inspector里的一致)
        Toggle easyToggle = difficultyToggleGroup.GetComponentsInChildren<Toggle>(true)
            .FirstOrDefault(t => t.name == "EasyDifficultyToggle");
        
        if (easyToggle != null)
        {
            easyToggle.isOn = true;
        }
    }
}

关键注意事项

  • 确保所有需要互斥的Toggle,它们的group属性都已经关联到你的difficultyToggleGroup,否则ToggleGroup不会管理它们的选中状态。
  • 不要手动去设置其他Toggle的isOn为false,ToggleGroup会自动处理互斥逻辑,手动设置反而可能导致状态混乱。

内容的提问来源于stack exchange,提问作者Johnny Bra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 15:52:39