using System.Collections; using System.Collections.Generic; using UnityEngine; public class StatusEffectIndexer : MonoBehaviour { #region Singleton private static StatusEffectIndexer _instance; // Public reference to the singleton instance public static StatusEffectIndexer 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(StatusEffectIndexer).Name); _instance = singletonObject.AddComponent(); } } return _instance; } } #endregion public List StatusEffects = 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 (StatusEffects == null) return; foreach (StatusEffect statusEffect in Resources.FindObjectsOfTypeAll()) { if (StatusEffects.Contains(statusEffect)) continue; StatusEffects.Add(statusEffect); } } }