一:使用步骤——创建一个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