SingletonMonoBehaviour
シングルトンモノビヘイビア
複数のSceaneを跨いで存在し続けるオブジェクトを作ったりする。 code:SingletonMonoBehaviour.cs
using UnityEngine;
public class SingletonMonoBehaviour<T> : MonoBehaviour where T : SingletonMonoBehaviour<T>{
protected static T instance;
public static T Instance{
get{
if (instance == null){
instance = (T)FindObjectOfType(typeof(T));
if (instance == null){
Debug.LogWarning(typeof(T) + "is nothing");
}
}
return instance;
}
}
protected virtual void Awake(){
CheckInstance();
}
protected bool CheckInstance(){
if (instance == null){
instance = (T)this;
return true;
}else if (Instance == this){
return true;
}
Destroy(this);
return false;
}
}
利用者側
code:cs
using UnityEngine;
using System.Collections;
public class NewBehaviourScript : SingletonMonoBehaviour<NewBehaviourScript>
{
override protected void Awake()
{
// 子クラスでAwakeを使う場合は
// 必ず親クラスのAwakeをCallして
// 複数のGameObjectにアタッチされないようにします.
base.Awake();
}
}