UGUI学习笔记(五) ToggleGroup制作选择题单选框

      UGUI有一个Toggle组件 用来制作一个可勾选的选项,组件面板如下图所示


      其中Interactable选项用来选择是否可操作,不勾选的话就是不可操作的,isOn是用来判断当前这个Toggle的勾选状态,OnValueChanged是当前Toggle值被改变时会被调用,可以在代码里加监听,也可以讲对象直接拖在面板里选择方法来监听。重点说一下这个Group属性。


      在其他物体上挂载一个ToggleGroup选项,再在其他Toggle面板的Group上将这个ToggleGroup物体拖进去,那这些Toggle就成为了一个组,一个组里的Toggle只能有一个Toggle被勾选。ToggleGroup面板如下图所示:


    面板很简单只有一个AllowSwitchOff的属性,用来选择所有Toggle能不能同时被不勾选。但是它有一些方法需要说明一下。

    

ToggleGroup继承自UIBehaviour,可以将多个Toggle分到一个组里而保持至多一个Toggle状态为On。它有一个m_Toggles的成员变量,这是一个Toggle类型的List,用于保存注册在该ToggleGroup的所有Toggle。上文也讲到了,Toggle在OnEnable的时候注册到group,OnDisable的时候移出group,另外通过为group属性赋值也可以让Toggle注册到指定的ToggleGroup(一般是编辑器帮我们设置)。

注册和移出的代码很简单,就是将toggle加入m_Toggles或从m_Toggles删除。NotifyToggleOn这个方法是将除了输入的Toggle之外所有的Toggle都关闭(isOn = false)。我们也可以调用ToggleGroup的一些方法,例如AnyTogglesOn判断是否有Toggle开启(Toggle的set方法也调用了这个方法,即没有任何Toggle开启且group不允许全部Toggle关闭的时候,强制设为开启),ActiveToggles获取开启的Toggle,SetAllTogglesOff关闭所有Toggle。


ActiveToggles获取开启的Toggle,这个方法返回的是IEnumerable<Toggle> 这个类型的一个Toggle的集合,想要把Toggle类型读出来,得通过以下代码

        IEnumerable<Toggle> answersGroup = ToggleGroup.ActiveToggles();
        foreach (Toggle t in answersGroup)
        {//遍历这个存放Toggle的按钮组IEnumerable,此乃C#的一个枚举集合,一般直接用foreach遍历  
            if (t.isOn)//遍历到一个被选择的Toggle  
            {
                switch (t.name)//根据这个Toggle的name,我们给string sex赋予不同的值  
                {
                    case "Toggle0":
                        sex = "男";
                        break;
                    case "Toggle1":
                        sex = "女";
                        break;
                }
                break;//就没必要遍历下去了,后面已经可以预见到,都是没被选择的Toggle。  
            }
        }


  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值