(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,3 @@
fileFormatVersion: 2
guid: 44fba140ed5941d3999e1ff66685b176
timeCreated: 1752049808

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();
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 9abe30aefbadea24b9a23da5020a413c

View File

@ -0,0 +1,8 @@
namespace Utils
{
public class Singleton<T> where T : new()
{
private static T _instance;
public static T Instance => _instance ??= new T();
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 0937f7a41cd612b4aae1f33f9c1d938a