using Animation; using UnityEngine; interface IManager { void Init() { } void OnUpdate() { } void Clear() { } } public class Manager : MonoBehaviour, IManager { static Manager s_instance; static Manager Instance {get { Init(); return s_instance;}} InputManager _input = new InputManager(); PoolManager _pool = new PoolManager(); ResourceManager _resource = new ResourceManager(); public static InputManager Input { get { return Instance._input; } } public static PoolManager Pool { get { return Instance._pool; } } public static ResourceManager Resource { get { return Instance._resource; } } static void Init() { if (s_instance == null) { GameObject obj = GameObject.Find("@Manager"); if (obj == null) { obj = new GameObject { name = "@Manager" }; obj.AddComponent(); } DontDestroyOnLoad(obj); s_instance = obj.GetComponent(); s_instance._pool.Init(); } } void Start() { Init(); } void Update() { _input.OnUpdate(); } // 클리어는 모든 것을 초기화 하는 역할로 자주 사용 되기에 그냥 전역적으로 사용 가능하게 함 public static void Clear() { Input.Clear(); Resource.Clear(); Pool.Clear(); } }