81 lines
2.2 KiB
C#
81 lines
2.2 KiB
C#
|
using UnityEngine;
|
|||
|
using System.Collections;
|
|||
|
using UnityEngine.UI;
|
|||
|
|
|||
|
// 用于控制一组 UIToggleSwap
|
|||
|
public class TogglesControl : MonoBehaviour {
|
|||
|
|
|||
|
private ToggleGroup toggleGroup; // 控制唯一 Toggle 被勾选
|
|||
|
private Toggle[] toggles; // 子物体 toggles
|
|||
|
private UIToggleSwap[] toggleSwaps; // toggles 显示脚本
|
|||
|
|
|||
|
public delegate void VoidIntDelegate(int index);
|
|||
|
|
|||
|
public event VoidIntDelegate OnTogglesSelect; // 返回当前被选中的 Toggle 索引
|
|||
|
|
|||
|
private bool hasInit = false;
|
|||
|
private void Awake()
|
|||
|
{
|
|||
|
Init();
|
|||
|
}
|
|||
|
|
|||
|
private void Init()
|
|||
|
{
|
|||
|
if (!hasInit)
|
|||
|
{
|
|||
|
toggleGroup = transform.GetComponent<ToggleGroup>();
|
|||
|
toggles = transform.GetComponentsInChildren<Toggle>();
|
|||
|
toggleSwaps = transform.GetComponentsInChildren<UIToggleSwap>();
|
|||
|
|
|||
|
for (int i = 0; i < toggles.Length; ++i)
|
|||
|
{
|
|||
|
toggles[i].group = toggleGroup;
|
|||
|
toggles[i].onValueChanged.AddListener(OnToggleChange);
|
|||
|
toggles[i].onValueChanged.AddListener(toggleSwaps[i].OnToggleSwap);
|
|||
|
}
|
|||
|
|
|||
|
hasInit = true;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 设置ToggleS组中某个Toggle成激活状态
|
|||
|
/// </summary>
|
|||
|
/// <param name="index">激活的的Toggle索引,0为第一个</param>
|
|||
|
public void SetToggleOn(int index = 0)
|
|||
|
{
|
|||
|
// 此处Init为解决当其他脚本在OnEnable调用时,该脚本会出现未初始化的情况。
|
|||
|
Init();
|
|||
|
if(toggles != null && index != -1)
|
|||
|
{
|
|||
|
if(index < toggles.Length)
|
|||
|
{
|
|||
|
toggles[index].isOn = true;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public void OnToggleChange(bool isOn)
|
|||
|
{
|
|||
|
if(isOn)
|
|||
|
{
|
|||
|
for(int i = 0; i < toggles.Length; i++)
|
|||
|
{
|
|||
|
if(toggles[i].isOn && OnTogglesSelect != null)
|
|||
|
{
|
|||
|
OnTogglesSelect(i);
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public void OnDisable()
|
|||
|
{
|
|||
|
foreach (Toggle tg in toggles)
|
|||
|
{
|
|||
|
tg.isOn = false;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|