using System; using System.Collections.Generic; using UnityEngine; public class IndicatorInfo : MonoBehaviourSingletonTemplate { [RuntimeInitializeOnLoadMethod] static void OnRuntimeMethodLoad() { var go = new GameObject("IndicatorInfo").AddComponent(); DontDestroyOnLoad(go.gameObject); } Dictionary> dic_indicator = new Dictionary>(); public void All_Off_Imm() { foreach (var pair in dic_indicator) { List objList = pair.Value; for (int i = 0; i < objList.Count; i++) objList[i].SetActive(false); } } public void Make_Indicator(string indicatorName, Action action) { if (dic_indicator.ContainsKey(indicatorName)) { for (int i = 0; i < dic_indicator[indicatorName].Count; i++) { if (!dic_indicator[indicatorName][i].activeInHierarchy) { action?.Invoke(dic_indicator[indicatorName][i]); return; } } } AddrResourceMgr.Ins.LoadObject($"Assets/Res_Addr/Obj/{indicatorName}.prefab", handle => { var go = DSUtil.Get_Clone(handle.Result); go.transform.parent = transform; AddrResourceMgr.Ins.Set_AddressableReleaseSelf(go); go.SetActive(false); action?.Invoke(go); if (!dic_indicator.ContainsKey(indicatorName)) dic_indicator.Add(indicatorName, new List()); dic_indicator[indicatorName].Add(go); }); } public void Show_Indicator(string indicatorName, Vector3 pos, float showtime) { Make_Indicator(indicatorName, go => { go.transform.position = pos; go.SetActive(true); CoroutineMgr.Ins.Set_Coroutine(() => { go.SetActive(false); }, showtime); }); } }