Files
Gen_Hack-and-Slash-Roguelit…/Client/Assets/Scripts/Utils/MonoSingleton.cs
2025-07-09 16:45:29 +08:00

32 lines
829 B
C#

using UnityEngine;
namespace Utils
{
public abstract class MonoSingleton<T> : MonoBehaviour where T : MonoBehaviour
{
private static T _instance;
public bool isGlobal = true;
public static T Instance => _instance ??= FindFirstObjectByType<T>();
private void Awake()
{
Debug.LogWarning($"{typeof(T)} [{GetInstanceID()}] Awake");
if (isGlobal)
{
if (_instance is not null && _instance != gameObject.GetComponent<T>())
{
Destroy(gameObject);
return;
}
DontDestroyOnLoad(gameObject);
_instance = gameObject.GetComponent<T>();
}
OnStart();
}
protected abstract void OnStart();
}
}