好久沒寫了,今天來把關於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); } }