一:使用步骤——创建一个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 }
来源:https://www.cnblogs.com/AaronBlogs/p/6891418.html