ProjectDDD/Assets/_DDD/_Scripts/GameFramework/GameManager.cs
2025-07-10 14:48:44 +09:00

47 lines
1.4 KiB
C#

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