유니티3D 싱글톤 구현 방법
public class SingletonMonoBehaviour<T> : MonoBehaviour where T : SingletonMonoBehaviour<T>
{
private static T m_instance;
public static T instance
{
get
{
if (m_instance == null)
{
//find existing instance
m_instance = GameObject.FindObjectOfType<T>();
if (m_instance == null)
{
//create new instance
GameObject go = new GameObject(typeof(T).Name);
m_instance = go.AddComponent<T>();
m_instance.transform.SetParent(Global.global.transform);
}
//initialize instance if necessary
if (!m_instance.initialized)
{
m_instance.initialized = true;
m_instance.Initialize();
}
}
return m_instance;
}
}
protected bool initialized { get; set; }
protected virtual void Awake() { }
protected virtual void Initialize() { }
}
싱글톤 구현. Global은 전역으로 사용할 수 있는 클래스