Unity - 싱글톤 (Singleton)

k_hyun·2022년 10월 5일
0

Unity

목록 보기
1/3

싱글톤이란 ?

게임매니저나 다른 매니저는 오직 한 개의 인스턴스만으로 충분하지만, 작업을 진행하다 보면 나도 모르게 여러개의 인스턴스를 생성하는 경우가 생길 수 있다.

이를 방지하기 위하여 단 하나의 인스턴스만을 사용하도록 설계하는 것을 싱글톤 패턴이라 한다.

싱글톤 패턴은 오직 한 개의 클래스 인스턴스만을 갖도록 보장하고, 이에 대한 전역적인 접근점을 제공한다.

코드 예시

public class Managers : MonoBehaviour
{
    static Managers s_instance;
    public static Managers Instance { get { Init(); return s_instance; } }  //  외부에서 Instance를 호출하는 순간 Init()함수도 호출됨
    
    // Start is called before the first frame update
    void Start()
    {
        Init();
    }

    // Update is called once per frame
    void Update()
    {
        
    }

    // 정적 변수 s_instance를 초기화 하는 함수
    static void Init()
    {
        if (s_instance == null)
        {
            GameObject go = GameObject.Find("@Managers");
            if (go == null)
            {
                go = new GameObject { name = "@Managers" };
                go.AddComponent<Managers>();
            }
            DontDestroyOnLoad(go);
            s_instance = go.GetComponent<Managers>();
        }
    }
}
public class Player : MonoBehaviour
{
    
    void Start()
    {
        Managers mg = Managers.Instance;
    }
    
    void Update()
    {
        
    }
}

위와 같이 Managers와 Player 스크립트를 작성하였다.

이후 Player 스크립트를 MainCamera에 넣고 게임을 실행해 보았다.

결과

[실행 전]

[실행 후]

매니저 오브젝트가 생성되었고, Managers 스크립트가 붙어 있음을 확인하였다.

0개의 댓글