SingleTon:
public class SingleTon<T> where T : new()
{
private static T _instance;
private static T Instance
{
get
{
if (_instance == null)
_instance = new T();
return _instance;
}
}
}
MonoSingleTon:
public abstract class MonoSingleton<T> : MonoBehaviour where T : MonoSingleton<T>{
private static T m_Instance = null;
public static T instance{
get{
if( m_Instance == null )
{
m_Instance = GameObject.FindObjectOfType(typeof(T)) as T;
if( m_Instance == null )
{
GameObject go = new GameObject(typeof(T).ToString());
m_Instance = go.AddComponent<T>();
m_Instance.Init();
}
}
return m_Instance;
}
}
public virtual void Init(){ }
private void OnApplicationQuit(){
m_Instance = null;
}
}