using UnityEngine;
namespace Framework {
/// <summary>
/// MonoBehaviour单例
/// </summary>
/// <typeparam name="T">单例类</typeparam>
public abstract class MonoSingleton<T> : MonoBehaviour where T : MonoSingleton<T> {
private static T s_Instatnce;
/// <summary>
/// 实例
/// </summary>
public static T Instance {
get {
if (s_Instatnce == null) {
s_Instatnce = FindObjectOfType<T> () ?? new GameObject ().AddComponent<T> ();
}
return s_Instatnce;
}
}
protected virtual void Awake () {
gameObject.name = GetType ().Name;
transform.SetParent (Core.Instance.transform, false);
transform.hideFlags = HideFlags.NotEditable;
}
}
}