ProjectDDD/Assets/_DDD/_Scripts/GameFramework/GameManager.cs
2025-07-08 19:46:31 +09:00

46 lines
1.3 KiB
C#

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