본문 바로가기
Study/Unity

[Unity] 싱글톤 - Managers(매니저 관리 담당 매니저)

by 스테디코디스트 2024. 1. 29.
반응형
using UnityEngine;

public class Managers : MonoBehaviour
{
    #region 싱글톤
    static Managers _instance = null;
    public static Managers Instance { get { Init(); return _instance; } }

    static void Init()
    {
        if (_instance == null)
        {
            // @Manager 라는 이름의 게임 오브젝트를 찾음
            GameObject mgr = GameObject.Find("@Managers");

            // 해당 게임 오브젝트를 찾지 못한 경우 -> 새로 생성
            if (mgr == null)
            {
                Debug.Log("매니저 새로 생성");

                // 게임 오브젝트 생성
                mgr = Instantiate(new GameObject { name = "@Managers" });

                // Manager 스크립트를 붙임
                mgr.AddComponent<Managers>();
            }

            // 인스턴스 할당
            _instance = mgr.GetComponent<Managers>();

            // 게임 실행 도중 절대 사라지지 않게 함
            DontDestroyOnLoad(mgr);
        }        
    }

    private void Start()
    {
        Init();
    }
    #endregion

/* 이런 식으로 다른 매니저들을 불러올 수 있도록 함.
    static UIManager _ui = new UIManager();
    static TimeManager _time = new TimeManager();

    public static UIManager UI { get { return _ui; } }
    public static TimeManager Time { get { return _time; } }
*/
}

 

// 인프런 루키스님의 강좌에서 인용했음.