NGUI单选框如何设置

2015年01月21日 10:47 0 点赞 0 评论 更新于 2025-11-21 15:00

在NGUI中,我们通常使用Toggle来实现单选框功能。下面将详细介绍如何实现这一功能。

代码实现

using UnityEngine;
using System.Collections;

public class ToggleExample : MonoBehaviour
{
// 存储所有Toggle组件的数组
UIToggle[] toggles;
// 单选框所代表的值,取值为0、1、2、3
int value = 0;

void Awake()
{
// 初始化Toggle数组,这里假设存在3个Toggle
toggles = new UIToggle[3];
for (int i = 0; i < 3; i++)
{
// 通过路径查找并获取对应的Toggle组件
toggles[i] = this.transform.Find("Anchor/Panel/CheckBox/Toggle_" + (i + 1)).gameObject.GetComponent<UIToggle>();
// 打印Toggle的名称,用于调试
print(toggles[i].name);
// 为Toggle所在的GameObject添加UIEventListener组件
toggles[i].gameObject.AddComponent<UIEventListener>();
// 为点击事件绑定ButtonClick方法
UIEventListener.Get(toggles[i].gameObject).onClick = ButtonClick;
}
}

// 记录每个Toggle的点击次数
int click1 = 0;
int click2 = 0;
int click3 = 0;

void ButtonClick(GameObject obj)
{
// 获取点击的GameObject的名称
string name = obj.name;
switch (name)
{
case "Toggle_1":
// 点击次数加1
click1++;
// 重置其他Toggle的点击次数
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);
}
}

代码解释

  1. Awake方法:在脚本实例被唤醒时调用,主要完成Toggle组件的查找和事件绑定。通过transform.Find方法根据路径查找对应的Toggle,并为其添加UIEventListener组件,将点击事件绑定到ButtonClick方法。
  2. ButtonClick方法:处理Toggle的点击事件。根据点击的Toggle名称,更新点击次数和value的值。通过判断点击次数的奇偶性来决定是否选中该Toggle,并显示或隐藏勾选标记。

注意事项

  • 代码中假设存在3个Toggle,并且其名称分别为Toggle_1Toggle_2Toggle_3,实际使用时需要根据项目中的命名进行调整。
  • UIEventListener是NGUI中用于处理UI事件的组件,确保项目中已经正确导入并使用了NGUI。

通过以上步骤,你就可以在NGUI中实现单选框的功能了。

作者信息

feifeila

feifeila

共发布了 3994 篇文章