2025-07-08 10:46:31 +00:00
|
|
|
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();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// 초기 씬으로 보내주기
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|