Unity 숙련 팀 프로젝트 - 2

이준호·2023년 12월 18일
0

📌 Unity 게임 개발 숙련 - 팀 프로젝트



📌 Manger 관리 방식

Game Manager

  • 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
}

Data Manager

  • 게임 데이터를 로드하고 저장하는 역할

  • 플레이어 정보, 아이템 데이터, 게임 설정 등의 데이터를 관리

  • 데이터의 변경 및 업데이트가 필요한 경우 이벤트 시스템을 활용 (구독)

Stage Manager

  • 게임의 스테이지를 관리

  • 스테이지의 초기화(생성), 종료, 이동 등을 처리

  • 스테이지에 필요한 리로스를 로드/ 해제

Audio Manager

  • 게임 내 오디오를 관리

  • BGM / SFX 등을 재생하거나 중지

  • 오디오 리소스 로드 / 해제 담당

UI Manager

  • 게임 내 UI 관리

  • 화면에 표시되는 UI의 초기화, 갱신, 숨김 등을 처리

  • 사용자 입력에 따른 이벤트 처리 담당

디자인 패턴

  • 싱글톤 패턴

  • 이벤트 시스템 (구상중)

    • 옵저버 패턴이나 이벤트를 활용하여 각 매니저 간의 통신
    • 예) 스테이지가 변경될 때 이벤트 발생 : UI매니저에게 알리고, UI매니저가 그에 맞게 UI갱신
    • 예) 캐릭터 스탯이 변경될 때 이벤트 발생 : 데이터 매니저에게 알리고 그에 맞게 캐릭터 데이터 갱신
  • (추후 인터페이스 리팩토링 고려)

profile
No Easy Day

0개의 댓글