세가지 핵심 역할로 분리해서 애플리케이션의 로직을 만드는데 이렇게 함으로써 코드의 유지 보수성과 확장성을 높이게 된다.
UI 패턴 또는 애플리케이션 설계 패턴으로 불린다.
1. MVC ( Model-View-Controller) 모델
Model (모델): 비즈니스 로직과 데이터를 관리함
View(뷰) : UI(화면)을 담당
Controller(컨트롤러): Model이나 View를 업데이트하는 사용자의 입력(마우스 클릭,키보드 입력)을 받음
2. MVP (Model-View-Presenter) 모델
MVC에서 파생된 패턴으로 Unity와 같은 환경에서 더 선호하는 경향이 있다.
Model(모델) : 비즈니스 로직과 데이터 관리 (1번 모델과 동일)
View (뷰) : 화면(UI)를 담당하여 사용자에게 보여지는 부분이다, Presenter에 사용자 입력을 전달, 자체 로직은 거의 없음
Presenter (프리젠터): 중개자 역할을 함 (View와 Model 사이), View에게 받은 입력으로 Model을 업데이트하고, Model의 변경사항을 감지하여 View를 업데이트 하도록 지시함, View와 Model을 강력하게 연결함
MVP를 선호하는 이유
유니티의 컴포넌트 기반 아키텍쳐(Component-based Architecture)와의 테스트 용이성 및 호환성이 좋기 때문이다.
MVP는 MVC에서 파생되었지만 유니티 환경에서 몇 가지 핵심적인 차이가 있고 이 부분에서 MVP가 장점을 가진다.
1.View와 Presenter 간의 명확한 분리 (느슨한 결합)
MVC의 Cotroller: Controller와 View가 강하게 결합되는 경향이 있음 Cotroller가 입력을 처리하고 View를 직접 업데이트 할 수 있음
MVP의 Presenter: Presenter는 중개자 역할을 함 (View와 Model 사이), View는 Presenter의 지시를 따르기만 함. View가 수동적인 역할을 하게 되고 자체 로직이 최소화 됨
유니티에서의 장점: 유니티의 MonoBehaviour 스크립트는 필연적으로 Transform,Animator, GameObject 등 유니티 엔진 요소에 종속됨.
MVP에서는 이런 종속적인 코드를 View에 집중시키고, 제어 흐름과 핵심 게임로직을 담당하는 Presenter는 유니티 의존성을 줄일 수 있게 됨
2. 테스트 용이성 (Testability)
테스트는 유니티 개발에서 중요한 이슈임
MVP의 Presenter및 Model: 순수 C# 클래스(Plain C# Objects)로 MonoBehaviour를 상속받지 않을 수 있음. 이렇게 되면 유니티 엔진 없이 단위 테스트(Unit Test) 프레임 워크를 사용하여 쉽게 테스트가 가능함
MVC의 Controller/View: 유니티 컴포넌트에 강하게 의존하는 경우, 전체 유니티 씬과 엔진 환경을 구동해야 테스트가 되어 테스트가 복잡하고 느려짐
유니티에서의 장점: 유니티와 독립적으로 빠르게 테스트 가능 (핵심 게임로직(체력 계산, 사망 판정 등))
3. 유니티 컴포넌트 시스템과의 조화
MVP 구조: Presenter는 메인 Gameobject(예:보스)에 부착하고, View는 UI Canvas에 부착하는 등 유니티의 컴포넌트 기반 아키텍처에 자연스러운 매핑이 가능함
MVC 구조: 전통적인 MVC 구조는 UI 프레임워크(예: 웹, 모바일)에 더 적합하게 설계되어서 유니티의 GameObject 계층 구조에 완벽하게 맞지 않을 수가 있음
구글 AI의 도움을 받아 작성되었습니다.
댓글 없음:
댓글 쓰기