using System; using System.Collections.Generic; using Unity.VisualScripting; using UnityEngine; using Object = UnityEngine.Object; namespace DDD { [CreateAssetMenu(fileName = "ManagerDefinition", menuName = "GameFramework/ManagerDefinition")] public class ManagerDefinition : ScriptableObject { public List ManagerClasses; } public class GameManager : Singleton { public ManagerDefinition _managerDefinition; public List _ManagerInstances; protected override void OnAwake() { base.OnAwake(); // Entry Scene에서 뭘 해야할까? // 매니저 초기화 foreach (var managerObject in _managerDefinition.ManagerClasses) { var managerInstance = Instantiate(managerObject); _ManagerInstances.Add(managerInstance); if (managerInstance is IManager manager) { manager.Init(); } } foreach (var managerInstance in _ManagerInstances) { if (managerInstance is IManager manager) { manager.PostInit(); } } // 초기 씬으로 보내주기 } } }