using System.Resources; using UnityEngine; public class Managers : MonoBehaviour { static Managers s_instance; static Managers Instance { get { init(); return s_instance; } } DataManager _data = new DataManager(); InputManager _input = new InputManager(); PoolManager _pool = new PoolManager(); ResourceManager _resource = new ResourceManager(); SceneManagerEx _scene = new SceneManagerEx(); SoundManager _sound = new SoundManager(); UIManager _ui = new UIManager(); public static DataManager Data { get { return Instance._data; } } public static InputManager Input { get { return Instance._input; } } public static PoolManager Pool { get { return Instance._pool; } } public static ResourceManager Resource { get { return Instance._resource; } } public static SceneManagerEx Scene { get { return Instance._scene; } } public static SoundManager Sound { get { return Instance._sound; } } public static UIManager UI { get { return Instance._ui; } } static void init() { if (s_instance == null) { GameObject obj = GameObject.Find("@Managers"); if (obj == null) { obj = new GameObject { name = "@Managers" }; obj.AddComponent(); } DontDestroyOnLoad(obj); s_instance = obj.GetComponent(); s_instance._data.Init(); s_instance._pool.Init(); s_instance._sound.Init(); } } // Start is called once before the first execution of Update after the MonoBehaviour is created void Start() { init(); } // Update is called once per frame void Update() { _input.OnUpdate(); } public static void Clear() { Input.Clear(); Sound.Clear(); Scene.Clear(); UI.Clear(); Pool.Clear(); } }