(client) feat:Add Singleton and MonoSingleton class

This commit is contained in:
CaicukunChiji
2025-07-09 16:45:29 +08:00
parent f426941617
commit 76908dbf8a
5 changed files with 47 additions and 0 deletions

View File

@ -0,0 +1,32 @@
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();
}
}