Manager들의 통로
각 Manager들에게 직접 접근이 불가능하게 하여 GameManager를 통해 간접적 접근만 가능.
public class GameManager : MonoBehaviour
{
public static GameManager instance = null;
#region Global Variable
[HideInInspector]
public DataManager DataManager { get; private set; }
[HideInInspector]
public StageManager StageManager { get; private set; }
[HideInInspector]
public AudioManager AudioManager { get; private set; }
[HideInInspector]
public UIManager UiManager { get; private set; }
#endregion
#region Data Variable
// Player Data
// Monster, Item 등등
#endregion
private void Awake()
{
if (instance == null)
{
instance = this;
}
else if (instance != this)
{
Destroy(gameObject);
}
DontDestroyOnLoad(gameObject);
InitializSetting();
}
#region Initialize
private void InitializSetting()
{
InitializeManager();
InitializeData();
InitializeStage();
InitializeUI();
InitializeAudio();
}
private void InitializeManager()
{
DataManager = GetComponentInChildren<DataManager>();
StageManager = GetComponentInChildren<StageManager>();
AudioManager = GetComponentInChildren<AudioManager>();
UiManager = GetComponentInChildren<UIManager>();
}
private void InitializeData()
{
// 데이터 초기화
}
private void InitializeStage()
{
// 스테이지 초기화
}
private void InitializeUI()
{
// UI 초기화
}
private void InitializeAudio()
{
// 오디오 초기화
AudioManager.InitalizeAudios();
}
#endregion
#region Data
public void PlayerDataUpdate()
{
DataManager.UpdatePlayerData(); // 파라미터 PlayerData 필요
}
#endregion
#region Stage
#endregion
#region UI
#endregion
#region Audio
public void PlayBackGroundMusic(string musicName)
{
}
public void PlayerSoundEffects(string soundName)
{
}
#endregion
}
게임 데이터를 로드하고 저장하는 역할
플레이어 정보, 아이템 데이터, 게임 설정 등의 데이터를 관리
데이터의 변경 및 업데이트가 필요한 경우 이벤트 시스템을 활용 (구독)
게임의 스테이지를 관리
스테이지의 초기화(생성), 종료, 이동 등을 처리
스테이지에 필요한 리로스를 로드/ 해제
게임 내 오디오를 관리
BGM / SFX 등을 재생하거나 중지
오디오 리소스 로드 / 해제 담당
게임 내 UI 관리
화면에 표시되는 UI의 초기화, 갱신, 숨김 등을 처리
사용자 입력에 따른 이벤트 처리 담당
싱글톤 패턴
이벤트 시스템 (구상중)
(추후 인터페이스 리팩토링 고려)