using System.Collections.Generic; using UnityEngine; namespace DDD { public class GameManager : Singleton { [SerializeField] private ManagerDefinitionSo _managerDefinitionSo; private List _managerInstances; protected void Start() { base.OnAwake(); if (_managerDefinitionSo == null) { Debug.LogError("_managerDefinitionSo"); return; } // Entry Scene에서 뭘 해야할까? // 매니저 초기화 _managerInstances = new List(_managerDefinitionSo.ManagerClasses.Count); foreach (var managerObject in _managerDefinitionSo.ManagerClasses) { var managerInstance = Instantiate(managerObject); managerInstance.name = managerObject.name; _managerInstances.Add(managerInstance); if (managerInstance is IManager manager) { manager.Init(); } } foreach (var managerInstance in _managerInstances) { if (managerInstance is IManager manager) { manager.PostInit(); } } // 초기 씬으로 보내주기 } } }