53 lines
1.4 KiB
C#
53 lines
1.4 KiB
C#
|
|
using UnityEngine;
|
|||
|
|
|
|||
|
|
public class MBSingletonManager<T> : MonoBehaviour where T : MonoBehaviour
|
|||
|
|
{
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20>洢Ψһʵ<D2BB><CAB5><EFBFBD><EFBFBD>˽<EFBFBD>о<EFBFBD>̬<EFBFBD><CCAC><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
private static T instance;
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
private static readonly object mlock = new object();
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD>ʵ<EFBFBD><CAB5>
|
|||
|
|
/// </summary>
|
|||
|
|
public static T Instance
|
|||
|
|
{
|
|||
|
|
get
|
|||
|
|
{
|
|||
|
|
// ʹ<><CAB9><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>̰߳<DFB3>ȫ
|
|||
|
|
lock (mlock)
|
|||
|
|
{
|
|||
|
|
if (instance == null)//<2F><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>Ϊ<EFBFBD><CEAA>,<2C><>Ѱ<EFBFBD><D1B0><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>ʵ<EFBFBD><CAB5>
|
|||
|
|
{
|
|||
|
|
instance = FindObjectOfType<T>();
|
|||
|
|
|
|||
|
|
if (instance == null)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>ҵ<EFBFBD>ʵ<EFBFBD><CAB5>,<2C><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>µ<EFBFBD>
|
|||
|
|
{
|
|||
|
|
GameObject singletonObject = new GameObject(typeof(T).Name);
|
|||
|
|
instance = singletonObject.AddComponent<T>();
|
|||
|
|
}
|
|||
|
|
DontDestroyOnLoad(instance); //<2F><><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD>л<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
}
|
|||
|
|
return instance;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20>ͷŵ<CDB7><C5B5><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
public virtual void ReleaseInstance()
|
|||
|
|
{
|
|||
|
|
if (instance != null)
|
|||
|
|
{
|
|||
|
|
Destroy(instance.gameObject);
|
|||
|
|
instance = null; // <20>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|