프로그래밍 - Programing/유니티, C#

유니티3D 싱글톤 구현 방법

pkmpkm1992 2016. 11. 18. 15:31

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은 전역으로 사용할 수 있는 클래스