using System.Collections; using System.Collections.Generic; using UnityEngine; namespace Template_RuntimeInstance { public class AbilityIndexer : MonoBehaviour { #region Singleton private static AbilityIndexer _instance; // Public reference to the singleton instance public static AbilityIndexer Instance { get { // If the instance doesn't exist, try to find it in the scene if (_instance == null) { _instance = FindObjectOfType(); // If it's still null, create a new GameObject and add the component if (_instance == null) { GameObject singletonObject = new GameObject(typeof(AbilityIndexer).Name); _instance = singletonObject.AddComponent(); } } return _instance; } } #endregion public List Abilities = new List(); protected void Awake() { // Ensure there's only one instance if (_instance != null && _instance != this) { Destroy(gameObject); return; } // If this is the first instance, set it as the singleton _instance = this; DontDestroyOnLoad(gameObject); } private void OnValidate() { if (Abilities == null) return; foreach (BaseAbility baseAbility in Resources.FindObjectsOfTypeAll()) { if (Abilities.Contains(baseAbility)) continue; Abilities.Add(baseAbility); } } } }