2025-07-08 10:46:31 +00:00
|
|
|
using System.Collections.Generic;
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
|
namespace DDD
|
|
|
|
{
|
|
|
|
public class GameManager : Singleton<GameManager>
|
|
|
|
{
|
2025-07-10 05:48:44 +00:00
|
|
|
[SerializeField]
|
|
|
|
private ManagerDefinitionSo _managerDefinitionSo;
|
|
|
|
|
|
|
|
private List<Singleton> _managerInstances;
|
2025-07-08 10:46:31 +00:00
|
|
|
|
2025-07-10 10:18:07 +00:00
|
|
|
protected void Start()
|
2025-07-08 10:46:31 +00:00
|
|
|
{
|
|
|
|
base.OnAwake();
|
|
|
|
|
2025-07-10 10:18:07 +00:00
|
|
|
if (_managerDefinitionSo == null)
|
|
|
|
{
|
|
|
|
Debug.LogError("_managerDefinitionSo");
|
|
|
|
return;
|
|
|
|
}
|
2025-07-08 10:46:31 +00:00
|
|
|
|
|
|
|
// 매니저 초기화
|
2025-07-10 05:48:44 +00:00
|
|
|
_managerInstances = new List<Singleton>(_managerDefinitionSo.ManagerClasses.Count);
|
|
|
|
|
|
|
|
foreach (var managerObject in _managerDefinitionSo.ManagerClasses)
|
2025-07-08 10:46:31 +00:00
|
|
|
{
|
|
|
|
var managerInstance = Instantiate(managerObject);
|
2025-07-10 10:18:07 +00:00
|
|
|
managerInstance.name = managerObject.name;
|
|
|
|
|
2025-07-10 05:48:44 +00:00
|
|
|
_managerInstances.Add(managerInstance);
|
2025-07-08 10:46:31 +00:00
|
|
|
if (managerInstance is IManager manager)
|
|
|
|
{
|
|
|
|
manager.Init();
|
|
|
|
}
|
|
|
|
}
|
2025-07-10 05:48:44 +00:00
|
|
|
foreach (var managerInstance in _managerInstances)
|
2025-07-08 10:46:31 +00:00
|
|
|
{
|
|
|
|
if (managerInstance is IManager manager)
|
|
|
|
{
|
|
|
|
manager.PostInit();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|