
正文
使用 NGUI Toggle 制作单选框
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
好久没写了,今天来把关于NGUI的做的简单功能发上来~
这个是做单选框的。用了新版本的NGUI后,发现没有以前的Checkbox了,在网上查了之后才知道是用Toggle代替了以前的Checkbox。现在使用Toggle也能实现单选框的效果了(把三个Toggle的group设为同一个数字就能实现三选一),单选功能是实现了,但是选择其中一个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);
} }








