|
|
|
|
using UnityEngine;
|
|
|
|
|
using System.Collections;
|
|
|
|
|
|
|
|
|
|
namespace AX.DevelopEngine
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <EFBFBD><EFBFBD>DontDestroyOnLoad<EFBFBD><EFBFBD><EFBFBD>Եĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <typeparam name="T"></typeparam>
|
|
|
|
|
public class MonoSingleton<T> : MonoBehaviour where T : MonoSingleton<T>
|
|
|
|
|
{
|
|
|
|
|
private static T instance = null;
|
|
|
|
|
public static T Instance
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
if (instance == null)
|
|
|
|
|
{
|
|
|
|
|
instance = FindObjectOfType(typeof(T)) as T;
|
|
|
|
|
if (instance == null)
|
|
|
|
|
{
|
|
|
|
|
instance = new GameObject("_" + typeof(T).Name).AddComponent<T>();
|
|
|
|
|
}
|
|
|
|
|
DontDestroyOnLoad(instance);
|
|
|
|
|
}
|
|
|
|
|
return instance;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void OnApplicationQuit() { if (instance != null) instance = null; }
|
|
|
|
|
|
|
|
|
|
public static T CreateInstance()
|
|
|
|
|
{
|
|
|
|
|
if (Instance != null) Instance.OnCreate();
|
|
|
|
|
return Instance;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected virtual void OnCreate()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static bool InstanceNull()
|
|
|
|
|
{
|
|
|
|
|
if (instance == null) return true;
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <EFBFBD><EFBFBD>DontDestroyOnLoad<EFBFBD><EFBFBD><EFBFBD>Եĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <typeparam name="T"></typeparam>
|
|
|
|
|
public class SingletonMono<T> : MonoBehaviour where T : SingletonMono<T>
|
|
|
|
|
{
|
|
|
|
|
private static T instance = null;
|
|
|
|
|
public static T Instance
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
if (instance == null)
|
|
|
|
|
{
|
|
|
|
|
instance = FindObjectOfType(typeof(T)) as T;//ֻ<EFBFBD>ܻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
if (instance == null)
|
|
|
|
|
{
|
|
|
|
|
instance = new GameObject("_" + typeof(T).Name).AddComponent<T>();
|
|
|
|
|
//DontDestroyOnLoad(instance);
|
|
|
|
|
}
|
|
|
|
|
//if (instance == null)
|
|
|
|
|
// Console.LogError("Failed to create instance of " + typeof(T).FullName + ".");
|
|
|
|
|
}
|
|
|
|
|
return instance;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void OnApplicationQuit() { if (instance != null) instance = null; }
|
|
|
|
|
|
|
|
|
|
public static T CreateInstance()
|
|
|
|
|
{
|
|
|
|
|
if (Instance != null) Instance.OnCreate();
|
|
|
|
|
return Instance;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected virtual void OnCreate()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|