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

如何在Unity2D C# GUI中实现单选按钮并检测点击?

嘿,我太懂这种找不到合适示例的憋屈了!作为Unity新手,找平台特定的实现确实容易被其他语言的资料带偏,ToggleGroup这个组件说起来简单,但官方文档确实没给直白的代码示例,难怪你头疼。别慌,我给你一个零复杂的分步方案,保证你看完就能搞定!

简单实现Unity2D C# GUI单选按钮(带点击检测)

第一步:编辑器里快速搭建UI结构

  • 右键Hierarchy面板 → UI → Toggle,创建第一个单选按钮(自带Toggle组件,就是我们要的单选按钮)
  • 重复上述步骤,创建你需要的所有选项(比如3个不同的单选按钮)
  • 右键Hierarchy面板 → UI → Toggle Group,创建一个ToggleGroup容器(这个对象只需要保留自带的ToggleGroup组件就行,不用加其他东西)
  • 选中每个Toggle,在Inspector面板的Toggle组件里,把刚才创建的ToggleGroup对象拖入Group属性栏——这样所有Toggle就会自动变成单选模式:同一时间只能选中一个

第二步:编写点击检测的C#脚本

新建一个C#脚本,命名为RadioButtonManager,把下面的代码复制进去:

using UnityEngine;
using UnityEngine.UI;

public class RadioButtonManager : MonoBehaviour
{
    // 可以手动把所有Toggle拖进这个数组
    public Toggle[] radioOptions;

    void Start()
    {
        // 给每个单选按钮绑定点击监听
        foreach (Toggle option in radioOptions)
        {
            option.onValueChanged.AddListener((isSelected) => OnRadioOptionClicked(option, isSelected));
        }
    }

    private void OnRadioOptionClicked(Toggle clickedOption, bool isSelected)
    {
        // 只有当按钮被选中时才执行逻辑(取消选中也会触发这个方法,所以要加判断)
        if (isSelected)
        {
            Debug.Log($"选中了选项:{clickedOption.name}");
            
            // 这里写你需要的业务逻辑,比如根据选中项执行不同操作
            switch (clickedOption.name)
            {
                case "Toggle_Easy":
                    Debug.Log("选择了简单难度");
                    // 执行简单难度的初始化逻辑
                    break;
                case "Toggle_Normal":
                    Debug.Log("选择了普通难度");
                    // 执行普通难度的初始化逻辑
                    break;
                case "Toggle_Hard":
                    Debug.Log("选择了困难难度");
                    // 执行困难难度的初始化逻辑
                    break;
            }
        }
    }
}

第三步:挂载脚本并配置

  • 把这个脚本挂载到任意一个GameObject上(比如Canvas或者专门的UI管理对象)
  • 在Inspector面板里,把你创建的所有Toggle拖进radioOptions数组里
  • 运行游戏,点击不同的单选按钮,就能在控制台看到选中的选项,而且同一时间只能选一个,完美实现单选!

额外省心小技巧(不用手动拖Toggle)

如果你不想一个个拖Toggle到数组里,可以通过ToggleGroup自动获取所有组内的选项,修改脚本如下:

using UnityEngine;
using UnityEngine.UI;

public class RadioButtonManager : MonoBehaviour
{
    // 直接拖入你的ToggleGroup对象
    public ToggleGroup radioGroup;

    void Start()
    {
        // 自动获取组内所有Toggle
        Toggle[] allOptions = radioGroup.GetComponentsInChildren<Toggle>();
        foreach (Toggle option in allOptions)
        {
            option.onValueChanged.AddListener((isSelected) => OnRadioOptionClicked(option, isSelected));
        }
    }

    private void OnRadioOptionClicked(Toggle clickedOption, bool isSelected)
    {
        if (isSelected)
        {
            Debug.Log($"选中了选项:{clickedOption.name}");
            // 这里写你的逻辑
        }
    }
}

这样只要把ToggleGroup对象拖进脚本的radioGroup字段,就能自动绑定所有单选按钮,更适合选项多的情况!

是不是比你想象的简单?Unity的ToggleGroup本质就是用来管理单选逻辑的,只是官方示例确实不够接地气,新手容易卡壳。有其他问题随时问哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:23:31