본문 바로가기
프로그래밍/일반

[Unity | 게임 디자인 패턴] 싱글톤 패턴의 사용

by 불타는홍당무 2018. 3. 4.

GameManager SoundManager와 같은 유일한 객체는 싱글톤 패턴으로 관리하는게 편리하다. 싱글톤 클래스 작성법에는 여러가지가 있으나 여기에서는 MonoBehaviour를 상속받는 싱글톤 클래스를 작성해 보았다. 


인스턴스를 생성한 방법을 눈여겨 봐야 하는데, 게임을 처음부터 플레이할 경우는 상관없으나 특정 씬만을 테스트할때 다른 씬의 싱글톤 클래스를 참조해야 할 경우가 있다. 이 때 null exception이 발생하므로 이에 대한 처리로 Resource폴더에서 프리팹을 불러와 인스턴스를 생성하도록 하였다. 이 클래스를 상속받으면 싱글톤 패턴이 적용된다. 


덧붙이자면 참조가 많은 public 프로퍼티나, 변수, 함수는 static으로 작성하여 '클래스명.객체명' 형식으로 바로 접근하도록 하는 것이 바람직하다.



public class Singleton<T> : MonoBehaviour where T : MonoBehaviour

{

    protected static T instance;

    public static T Instance

    {

        get

        {

            if (instance == null)

            {

                instance = Instantiate(Resources.Load((T.ToString()), typeof(GameObject))) as GameObject;

                if (instance == null)

                {

                    Debug.LogError("Error Creating Intance.");

                }

            }

            return instance;

        }

    }

}