using System.Collections.Generic; using UnityEngine; namespace DDD { [CreateAssetMenu(fileName = "ManagerDefinitionSo", menuName = "GameFramework/ManagerDefinitionSo")] public class ManagerDefinitionSo : ScriptableObject { public List ManagerClasses; } public class GameManager : Singleton { [SerializeField] private ManagerDefinitionSo _managerDefinitionSo; private List _managerInstances; protected override void OnAwake() { base.OnAwake(); // Entry Scene에서 뭘 해야할까? // 매니저 초기화 _managerInstances = new List(_managerDefinitionSo.ManagerClasses.Count); foreach (var managerObject in _managerDefinitionSo.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(); } } // 초기 씬으로 보내주기 } } }