chicken_dy/Assets/Scripts/ToukaGames/Common/Singleton/Singleton.cs

50 lines
1.3 KiB
C#

using UnityEngine;
using System.Collections;
namespace Touka.GameLogic {
/// <summary>
/// 单例类
/// </summary>
/// <typeparam name="T"></typeparam>
public class ToukaSingleton<T> where T : MonoBehaviour
{
private static T _instance;
public static T GetInstance()
{
if (null == _instance)
{
_instance = Object.FindObjectOfType(typeof(T)) as T;
if (null != _instance) return _instance;
GameObject container = new GameObject
{
name = typeof(T).ToString()
};
container.hideFlags = HideFlags.HideInHierarchy;
_instance = container.AddComponent(typeof(T)) as T;
Object.DontDestroyOnLoad(container);
}
return _instance;
}
}
public abstract class ToukaSingletonMonoBehaviour<T> : MonoBehaviour where T : MonoBehaviour
{
public static T Instance
{
get { return ToukaSingleton<T>.GetInstance(); }
}
public static T GetInstance()
{
return ToukaSingleton<T>.GetInstance();
}
public virtual void Dispose()
{
}
}
}