반응형
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; } }
*/
}
// 인프런 루키스님의 강좌에서 인용했음.