using System; using System.Collections; using System.Collections.Generic; using UnityEngine; namespace ProjectX { public class App : MonoBehaviour { public static App instance { get; private set; } public static T Module() where T : MonoBehaviour { var type = typeof(T); MonoBehaviour module = null; instance.moduleTable.TryGetValue(type, out module); return module as T; } public List moduleList = new List(); private Dictionary moduleTable = new Dictionary(); public virtual void Awake() { instance = this; foreach (var m in this.moduleList) { this.moduleTable.Add(m.GetType(), m); } } public void OnDestroy() { this.moduleTable.Clear(); } public virtual void Start() { } public virtual void Update() { } } }