using System.Collections.Generic; using UnityEngine; namespace DDD { public class GameManager : Singleton { [SerializeField] private ManagerDefinitionSo _managerDefinitionSo; private List _managerInstances; protected async void Start() { base.OnAwake(); if (_managerDefinitionSo == null) { Debug.LogError("_managerDefinitionSo"); return; } EventBus.ClearAll(); // 매니저 초기화 _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.PreInit(); } } foreach (var managerInstance in _managerInstances) { if (managerInstance is IManager manager) { await manager.Init(); } } foreach (var managerInstance in _managerInstances) { if (managerInstance is IManager manager) { manager.PostInit(); } } } } }