取自某热门网游
using System;
public class Singleton<T> where T : class, new()
{
private static T _Instance;
public static T Instance
{
get
{
if (Singleton<T>._Instance == null)
{
Singleton<T>._Instance = Activator.CreateInstance<T>();
}
return Singleton<T>._Instance;
}
}
static Singleton()
{
Singleton<T>._Instance = Activator.CreateInstance<T>();
}
public static void CreateInstance()
{
if (Singleton<T>._Instance == null)
{
Singleton<T>._Instance = Activator.CreateInstance<T>();
}
}
public static void DestroyInstance()
{
if (Singleton<T>._Instance != null)
{
Singleton<T>._Instance = (T)((object)null);
}
}
public static T GetInstance()
{
if (Singleton<T>._Instance == null)
{
Singleton<T>._Instance = Activator.CreateInstance<T>();
}
return Singleton<T>._Instance;
}
}
using System;
using UnityEngine;
namespace Engine
{
public abstract class MonoSingleton<T> : MonoBehaviour where T : MonoSingleton<T>
{
private static T m_Instance;
public static T Instance
{
get
{
if (MonoSingleton<T>.m_Instance == null)
{
MonoSingleton<T>.m_Instance = (UnityEngine.Object.FindObjectOfType(typeof(T)) as T);
}
return MonoSingleton<T>.m_Instance;
}
}
protected void Awake()
{
if (MonoSingleton<T>.m_Instance == null)
{
MonoSingleton<T>.m_Instance = (this as T);
}
}
private void OnDestroy()
{
MonoSingleton<T>.m_Instance = (T)((object)null);
}
protected void OnApplicationQuit()
{
MonoSingleton<T>.m_Instance = (T)((object)null);
}
}
}