NGUI之Toggle實現單選框


一:使用步驟——創建一個checkboxes

  1.首先在UI Root下建立一個Sprite,設置一張貼圖,當作按鈕的背景。

  

  然后為其添加碰撞組件和Toggle組件

  

  2.為第一個Sprite建立一個子Sprite,設置一張圖片,當作選中的標識。

  

  將其調整到適當的位置。

  

  3.選擇第一個Sprite的UIToggle組件

  

  為State Transition中的Sprite設置對象,即剛才添加的子Sprite。

以上便創建了一個checkboxes。

二:創建一個radio button groups

  1.將上面創建的checkboxes復制3個。

  2.將他們三個的UIToggle中的Group屬性,都改為同一個數字,但不能是0。

  注意:UIToggle中的Starting State如果勾選的話初始狀態則為選擇狀態。

  

單選功能是實現了,但是選擇其中一個toggle后無法取消選擇(比如點擊第一次就是選擇狀態再點一次就是取消選擇),不知道是不是我的使用方法不正確~在網上找了也沒找到NGUI自帶的實現方法,然后就自己寫了

代碼如下:

 1 using UnityEngine;
 2 using System.Collections;
 3 
 4 public class toggle : MonoBehaviour
 5 {
 6     UIToggle[] toggles;
 7     int value = 0;  //單選框所代表的的值:1、2、3
 8 
 9     void Awake()
10     {
11         toggles = new UIToggle[3];
12         for (int i = 0; i < 3; i++)
13         {
14             toggles[i] = this.transform.Find("Anchor/Panel/CheckBox/Toggle_" + (i+1)).gameObject.GetComponent<UIToggle>();
15             print(toggles[i].name);
16 
17             toggles[i].gameObject.AddComponent<UIEventListener>();
18             UIEventListener.Get(toggles[i].gameObject).onClick = ButtonClick;
19         }
20 
21     }
22 
23     int click1 = 0;
24     int click2 = 0;
25     int click3 = 0;
26 
27     void ButtonClick(GameObject obj)
28     {
29         
30         string name = obj.name;
31         switch(name)
32         {
33             case "Toggle_1":
34                 click1++;
35                 click2 = 0;
36                 click3 = 0;
37                 if (click1 % 2 == 0)
38                 {
39                     value = 0;
40                     toggles[0].value = false;
41                     GameObject sp = toggles[0].transform.FindChild("Checkmark").gameObject;
42                     sp.SetActive(false);
43                 }
44                 else 
45                 {
46                     value = 1;
47                     GameObject sp = toggles[0].transform.FindChild("Checkmark").gameObject;
48                     sp.SetActive(true);
49                 }
50                 break;
51 
52             case "Toggle_2":
53                 click2++;
54                 click1 = 0;
55                 click3 = 0;
56                 if (click2 % 2 == 0)
57                 {
58                     value = 0;
59                     toggles[1].value = false;
60                     GameObject sp = toggles[1].transform.FindChild("Checkmark").gameObject;
61                     sp.SetActive(false);
62                 }
63                 else
64                 {
65                     value = 2;
66                     GameObject sp = toggles[1].transform.FindChild("Checkmark").gameObject;
67                     sp.SetActive(true);
68                 }
69                 break;
70 
71             case "Toggle_3":
72                 click3++;
73                 click1 = 0;
74                 click2 = 0;
75                 if (click3 % 2 == 0)
76                 {
77                     value = 0;
78                     toggles[2].value = false;
79                     GameObject sp = toggles[2].transform.FindChild("Checkmark").gameObject;
80                     sp.SetActive(false);
81                 }
82                 else
83                 {
84                     value = 3;
85                     GameObject sp = toggles[2].transform.FindChild("Checkmark").gameObject;
86                     sp.SetActive(true);
87                 }
88                 break;
89 
90             default:
91                 break;
92         }
93 
94         print(value);
95     }
96 
97 }

 


免責聲明!

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



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