Files
2025-05-26 14:59:42 +08:00

38 lines
791 B
C#

using UnityEngine;
namespace AibisDream.Kit
{
public abstract class Singleton<T> : MonoBehaviour, ISingleton where T : Singleton<T>
{
public static T Instance { get; private set; }
protected virtual void Awake()
{
if (Instance != null && Instance != this)
{
Destroy(gameObject);
}
Instance = (T)this;
OnSingletonInit();
}
public virtual void OnSingletonInit()
{
}
protected virtual void OnDestroy()
{
OnSingletonDestroy();
if (Instance == this)
{
Instance = null;
}
}
public virtual void OnSingletonDestroy()
{
}
}
}