/// <summary> /// インスタンスがなければ作り、インスタンスを取得する /// </summary> /// <returns>インスタンス</returns> public static T GetOrCreate() { if (SingletonBehaviour <T> .Exists()) { return(SingletonBehaviour <T> .Instance); } return(SingletonBehaviour <T> .Create()); }
protected virtual void Awake() { if (SingletonBehaviour <T> .Exists()) { GameObject.Destroy(this.gameObject); return; } // 制約条件からキャストしても問題ない SingletonBehaviour <T> .Instance = this as T; }
/// <summary> /// インスタンスを作る /// </summary> /// <returns>作られたインスタンス</returns> public static T Create() { if (SingletonBehaviour <T> .Exists()) { Debug.LogWarning("既にインスタンスは存在します"); return(SingletonBehaviour <T> .Instance); } // GameObjectを作ってアタッチ var gameObject = new GameObject(typeof(T).FullName); return(gameObject.AddComponent <T>()); }