zoukankan      html  css  js  c++  java
  • 使用 NGUI Toggle 制作单选框

          好久没写了,今天来把关于NGUI的做的简单功能发上来~

          这个是做单选框的。用了新版本的NGUI后,发现没有以前的Checkbox了,在网上查了之后才知道是用Toggle代替了以前的Checkbox。现在使用Toggle也能实现单选框的效果了(把三个Toggle的group设为同一个数字就能实现三选一),单选功能是实现了,但是选择其中一个toggle后无法取消选择(比如点击第一次就是选择状态再点一次就是取消选择),不知道是不是我的使用方法不正确~在网上找了也没找到NGUI自带的实现方法,然后就自己写了,当然要实现这个本来就不难~发过来权当笔记。

          基本的控件使用方法网上一堆教程,都写的挺好的,照着做就能把控件搭好。

          直接挂代码(比较简单没怎么注释):

    using UnityEngine;
    using System.Collections;
    
    public class toggle : MonoBehaviour
    {
        UIToggle[] toggles;
        int value = 0;  //单选框所代表的的值:1、2、3
    
        void Awake()
        {
            toggles = new UIToggle[3];
            for (int i = 0; i < 3; i++)
            {
                toggles[i] = this.transform.Find("Anchor/Panel/CheckBox/Toggle_" + (i+1)).gameObject.GetComponent<UIToggle>();
                print(toggles[i].name);
    
                toggles[i].gameObject.AddComponent<UIEventListener>();
                UIEventListener.Get(toggles[i].gameObject).onClick = ButtonClick;
            }
    
        }
    
        int click1 = 0;
        int click2 = 0;
        int click3 = 0;
    
        void ButtonClick(GameObject obj)
        {
            
            string name = obj.name;
            switch(name)
            {
                case "Toggle_1":
                    click1++;
                    click2 = 0;
                    click3 = 0;
                    if (click1 % 2 == 0)
                    {
                        value = 0;
                        toggles[0].value = false;
                        GameObject sp = toggles[0].transform.FindChild("Checkmark").gameObject;
                        sp.SetActive(false);
                    }
                    else 
                    {
                        value = 1;
                        GameObject sp = toggles[0].transform.FindChild("Checkmark").gameObject;
                        sp.SetActive(true);
                    }
                    break;
    
                case "Toggle_2":
                    click2++;
                    click1 = 0;
                    click3 = 0;
                    if (click2 % 2 == 0)
                    {
                        value = 0;
                        toggles[1].value = false;
                        GameObject sp = toggles[1].transform.FindChild("Checkmark").gameObject;
                        sp.SetActive(false);
                    }
                    else
                    {
                        value = 2;
                        GameObject sp = toggles[1].transform.FindChild("Checkmark").gameObject;
                        sp.SetActive(true);
                    }
                    break;
    
                case "Toggle_3":
                    click3++;
                    click1 = 0;
                    click2 = 0;
                    if (click3 % 2 == 0)
                    {
                        value = 0;
                        toggles[2].value = false;
                        GameObject sp = toggles[2].transform.FindChild("Checkmark").gameObject;
                        sp.SetActive(false);
                    }
                    else
                    {
                        value = 3;
                        GameObject sp = toggles[2].transform.FindChild("Checkmark").gameObject;
                        sp.SetActive(true);
                    }
                    break;
    
                default:
                    break;
            }
    
            print(value);
        }
    
    }
  • 相关阅读:
    (一)七种AOP实现方法
    构造函数中base与this的区别
    第三章----CSS样式表综合整理
    第二章-----Html标签——综合整理
    第四章——JavaScript简单语法
    第一章---零基础闯荡IT界
    【matlab】读写文件
    icp算法基本思想
    KD-tree
    【MRPT】【icp-slam-live】Vs2013+ cmake3.6.1 + mrpt1.4.0+opencv2.9.4+wxWidget3.0.2环境配置
  • 原文地址:https://www.cnblogs.com/Sakya00/p/3603372.html
Copyright © 2011-2022 走看看