using DG.Tweening; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; public class ToggleSwitch : MonoBehaviour { public List ToggleGroup=new(); public List ToggleIamges=new(); public UnityAction ChannalToggleChange; private void Awake() { var toggles = GetComponentsInChildren(); 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