好久没写了,今天来把关于NGUI的做的简单功能发上来~
这个是做单选框的。用了新版本的NGUI后,发现没有以前的Checkbox了,在网上查了之后才知道是用Toggle代替了以前的Checkbox。现在使用Toggle也能实现单选框的效果了(把三个Toggle的group设为同一个数字就能实现三选一),单选功能是实现了,但是选择其中一个toggle后无法取消选择(比如点击第一次就是选择状态再点一次就是取消选择),不知道是不是我的使用方法不正确~在网上找了也没找到NGUI自带的实现方法,然后就自己写了,当然要实现这个本来就不难~发过来权当笔记。
基本的控件使用方法网上一堆教程,都写的挺好的,照着做就能把控件搭好。
直接挂代码(比较简单没怎么注释):
using UnityEngine; using System.Collections; public class toggle : MonoBehaviour { UIToggle[] toggles; int value = 0; //单选框所代表的的值:1、2、3 void Awake() { toggles = new UIToggle[3]; for (int i = 0; i < 3; i++) { toggles[i] = this.transform.Find("Anchor/Panel/CheckBox/Toggle_" + (i+1)).gameObject.GetComponent<UIToggle>(); print(toggles[i].name); toggles[i].gameObject.AddComponent<UIEventListener>(); UIEventListener.Get(toggles[i].gameObject).onClick = ButtonClick; } } int click1 = 0; int click2 = 0; int click3 = 0; void ButtonClick(GameObject obj) { string name = obj.name; switch(name) { case "Toggle_1": click1++; click2 = 0; click3 = 0; if (click1 % 2 == 0) { value = 0; toggles[0].value = false; GameObject sp = toggles[0].transform.FindChild("Checkmark").gameObject; sp.SetActive(false); } else { value = 1; GameObject sp = toggles[0].transform.FindChild("Checkmark").gameObject; sp.SetActive(true); } break; case "Toggle_2": click2++; click1 = 0; click3 = 0; if (click2 % 2 == 0) { value = 0; toggles[1].value = false; GameObject sp = toggles[1].transform.FindChild("Checkmark").gameObject; sp.SetActive(false); } else { value = 2; GameObject sp = toggles[1].transform.FindChild("Checkmark").gameObject; sp.SetActive(true); } break; case "Toggle_3": click3++; click1 = 0; click2 = 0; if (click3 % 2 == 0) { value = 0; toggles[2].value = false; GameObject sp = toggles[2].transform.FindChild("Checkmark").gameObject; sp.SetActive(false); } else { value = 3; GameObject sp = toggles[2].transform.FindChild("Checkmark").gameObject; sp.SetActive(true); } break; default: break; } print(value); } }