김김김의 게임개발
  • 유니티 게임개발 - 최종 프로젝트 #3
    2023년 10월 25일 23시 47분 02초에 업로드 된 글입니다.
    작성자: noun06

    본격적인 스크립트 작업에 들어가기 전 전체적인 설계를 해놓는 것이 바람직하다고 판단하였다.

    우선 유니티에서 UI 요소, 데이터, 로직의 흐름을 어떻게 다루는지에 대해 찾아보았다.

    그 중 MVC패턴에서 파생된 MVP패턴에 관련된 자료를 찾았고 적용해보기로 결정하였다.

    MVP패턴은 모델, 뷰, 프레젠터 세가지의 구성 요소로 나뉜다.

    간단하게 정리하면 모델은 데이터와 관련된 로직을 처리하는 역할을 한다.

    뷰는 정보를 표시하고 입력을 받는 UI 요소 자체를 나타낸다.

    프레젠터는 모델과 뷰를 연결하는 역할을 한다.

    세가지 요소로 나누어 강력한 결합을 방지하여 유지보수 및 확장성이 향상된다.

    어제 간단하게 제작한 팝업 관련 스크립트를 가져와 수정해보았다.

    public class UIPopupPresenter : MonoBehaviour
    {
        private GameModel gameModel;
        private UIPopupView popupView;
    
        private void Awake()
        {
            gameModel = new GameModel();
            popupView = GetComponent<UIPopupView>();
            popupView.RegisterBackButtonListener(HandleBackButton);
            popupView.RegisterCancelButtonListener(HandleCancelButton);
            popupView.RegisterConfirmButtonListener(HandleConfirmButton);
        }
    
        private void HandleBackButton(){}
    
        private void HandleCancelButton()
        {
            popupView.Hide();
        }
    
        private void HandleConfirmButton()
        {
            if (!gameModel.IsGameEnded)
            {
                gameModel.EndGame();
                popupView.Hide();
            }
        }
    }

     

    모델과 뷰(팝업 창) 객체를 Awake메서드에서 초기화하였다.

    각 버튼에 대해 호출되는 메서드를 정의하고 이벤트를 등록하였다.

    프레젠터로만 시스템을 연결하여 돌아가게 하기 때문에 이 부분을 잘 작성하는 것이 중요하다고 느껴졌다.

    댓글