一:使用步驟——創建一個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 }