使用 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);
    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM