91 lines
2.2 KiB
C#
91 lines
2.2 KiB
C#
using DG.Tweening;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.Events;
|
|
|
|
public class ToggleSwitch : MonoBehaviour
|
|
{
|
|
public List<ToggleWithNum> ToggleGroup=new();
|
|
|
|
public List<Transform> ToggleIamges=new();
|
|
|
|
public UnityAction<int> ChannalToggleChange;
|
|
|
|
private void Awake()
|
|
{
|
|
var toggles = GetComponentsInChildren<ToggleWithNum>();
|
|
|
|
for (int i = 0; i < toggles.Length; i++)
|
|
{
|
|
ToggleGroup.Add(toggles[i]);
|
|
toggles[i].ChannalToggleChange += OnChangeToggle;
|
|
}
|
|
|
|
ToggleIamges.Add(transform.Find("tab_selected_1"));
|
|
ToggleIamges.Add(transform.Find("tab_selected_2"));
|
|
ToggleIamges.Add(transform.Find("tab_selected_3"));
|
|
ToggleIamges.Add(transform.Find("tab_selected_4"));
|
|
}
|
|
|
|
public void HideFromIndex(int index)
|
|
{
|
|
if (index == -1)
|
|
{
|
|
foreach(ToggleWithNum toggle in ToggleGroup)
|
|
{
|
|
toggle.gameObject.SetActive(true);
|
|
}
|
|
return;
|
|
}
|
|
for (int i = 0; i < ToggleGroup.Count; i++)
|
|
{
|
|
ToggleGroup[i].gameObject.SetActive(i < index);
|
|
}
|
|
}
|
|
|
|
public void SetState(int num)
|
|
{
|
|
for (int i = 0; i < ToggleGroup.Count; i++)
|
|
{
|
|
if (i == num)
|
|
{
|
|
ToggleIamges[i].gameObject.SetActive(true);
|
|
}
|
|
else
|
|
{
|
|
ToggleIamges[i].gameObject.SetActive(false);
|
|
ToggleGroup[i].Toggle.SetIsOnWithoutNotify(false);
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
public void OnChangeToggle(bool isOn,int num)
|
|
{
|
|
|
|
ChannalToggleChange?.Invoke(num);
|
|
for (int i=0; i<ToggleGroup.Count; i++)
|
|
{
|
|
if(i==num)
|
|
{
|
|
|
|
ToggleIamges[num].gameObject.SetActive(isOn);
|
|
ToggleIamges[num].localScale=Vector3.zero;
|
|
ToggleIamges[num].DOKill();
|
|
ToggleIamges[num].DOScale(1f, 0.1f);
|
|
}
|
|
else
|
|
{
|
|
|
|
ToggleIamges[i].gameObject.SetActive(!isOn);
|
|
ToggleGroup[i].Toggle.isOn = !isOn;
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
}
|