//mono单例模板
using UnityEngine;
public abstract class SingletonMono<T> : MonoBehaviour where T : SingletonMono<T>
{
private static T instance = null;
public static T Instance
{
get
{
if (instance == null)
{
instance = FindObjectOfType<T>();
if (instance != null)
{
instance.Init();
}
}
return instance;
}
}
protected virtual void Init()
{
}
}
//通用单例模板
public abstract class Singleton<T> where T : Singleton<T>, new()
{
private readonly static object threadLockObj = new object();
private static T instance = null;
public static T Instance
{
get
{
if (instance == null)
{
lock (threadLockObj)
{
if (instance == null)
{
instance = new T();
}
}
}
return instance;
}
}
}
//