第一步:场景添加Canvas,Canvas下添加EmptyObject,EmptyObject下创建Toggles,脚本附给EmptyObject,脚本下Toggles元素分别选择EmptyObject下创建的Toggles;
第二步:分别为创建的Toggles添加On Value Changed(Boolean),第一个默认Runtime Only(根据需要选择),Object选择上面创建的EmptyObject,Function选CheckBoxSelect.boolean1;
(朋友写的)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class CheckBoxSelect : MonoBehaviour
{
// Start is called before the first frame update
public Toggle[] Toggles = new Toggle[3];
private Queue<Toggle> queueT = new Queue<Toggle>();
private Queue<Toggle> queueR = new Queue<Toggle>();
private int count = 0;
private Toggle tmp;
private void Start()
{
foreach (var item in Toggles)
item.onValueChanged.AddListener(isOn => { onToggleValueChaged(item); });
}
// Update is called once per frame
void Update()
{
}
private void onToggleValueChaged(Toggle it)
{
if (it.isOn)
{
queueT.Enqueue(it);
if (queueT.Count > 2)
{
queueT.Dequeue().isOn = false;
}
}
else
{
if (queueT.Contains(it))
{
count = queueT.Count;
for (int i = 0; i < count; i++)
{
tmp = queueT.Dequeue();
if (tmp != it)
queueR.Enqueue(tmp);
}
count = queueR.Count;
for (int i = 0; i < count; i++)
{
queueT.Enqueue(queueR.Dequeue());
}
}
}
}
}