一:使用步骤——创建一个checkboxes

  1.首先在UI Root下建立一个Sprite,设置一张贴图,当作按钮的背景。

  NGUI之Toggle实现单选框-LMLPHP

  然后为其添加碰撞组件和Toggle组件

  NGUI之Toggle实现单选框-LMLPHP

  2.为第一个Sprite建立一个子Sprite,设置一张图片,当作选中的标识。

  NGUI之Toggle实现单选框-LMLPHP

  将其调整到适当的位置。

  NGUI之Toggle实现单选框-LMLPHP

  3.选择第一个Sprite的UIToggle组件

  NGUI之Toggle实现单选框-LMLPHP

  为State Transition中的Sprite设置对象,即刚才添加的子Sprite。

以上便创建了一个checkboxes。

二:创建一个radio button groups

  1.将上面创建的checkboxes复制3个。

  2.将他们三个的UIToggle中的Group属性,都改为同一个数字,但不能是0。

  注意:UIToggle中的Starting State如果勾选的话初始状态则为选择状态。

  NGUI之Toggle实现单选框-LMLPHP

单选功能是实现了,但是选择其中一个toggle后无法取消选择(比如点击第一次就是选择状态再点一次就是取消选择),不知道是不是我的使用方法不正确~在网上找了也没找到NGUI自带的实现方法,然后就自己写了

代码如下:

 using UnityEngine;
using System.Collections; public class toggle : MonoBehaviour
{
UIToggle[] toggles;
int value = ; //单选框所代表的的值:1、2、3 void Awake()
{
toggles = new UIToggle[];
for (int i = ; i < ; i++)
{
toggles[i] = this.transform.Find("Anchor/Panel/CheckBox/Toggle_" + (i+)).gameObject.GetComponent<UIToggle>();
print(toggles[i].name); toggles[i].gameObject.AddComponent<UIEventListener>();
UIEventListener.Get(toggles[i].gameObject).onClick = ButtonClick;
} } int click1 = ;
int click2 = ;
int click3 = ; void ButtonClick(GameObject obj)
{ string name = obj.name;
switch(name)
{
case "Toggle_1":
click1++;
click2 = ;
click3 = ;
if (click1 % == )
{
value = ;
toggles[].value = false;
GameObject sp = toggles[].transform.FindChild("Checkmark").gameObject;
sp.SetActive(false);
}
else
{
value = ;
GameObject sp = toggles[].transform.FindChild("Checkmark").gameObject;
sp.SetActive(true);
}
break; case "Toggle_2":
click2++;
click1 = ;
click3 = ;
if (click2 % == )
{
value = ;
toggles[].value = false;
GameObject sp = toggles[].transform.FindChild("Checkmark").gameObject;
sp.SetActive(false);
}
else
{
value = ;
GameObject sp = toggles[].transform.FindChild("Checkmark").gameObject;
sp.SetActive(true);
}
break; case "Toggle_3":
click3++;
click1 = ;
click2 = ;
if (click3 % == )
{
value = ;
toggles[].value = false;
GameObject sp = toggles[].transform.FindChild("Checkmark").gameObject;
sp.SetActive(false);
}
else
{
value = ;
GameObject sp = toggles[].transform.FindChild("Checkmark").gameObject;
sp.SetActive(true);
}
break; default:
break;
} print(value);
} }
05-11 21:59