using UnityEngine; namespace RootMotion { /// /// Auto-instantiated singleton base class. /// public abstract class LazySingleton : MonoBehaviour where T : LazySingleton { private static T sInstance = null; public static bool hasInstance { get { return sInstance != null; } } public static T instance { get { if (sInstance == null) { string name = typeof(T).ToString(); sInstance = new GameObject(name).AddComponent(); } return sInstance; } } protected virtual void Awake() { sInstance = (T)this; } } }