Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- Unity
- m585 수리
- 유니티 해상도 변경
- navigation
- networkobject
- 깃허브 데스크탑 병합
- M590
- networkbehaviourid
- 몬스터
- NavMesh
- Github DeskTop Merge
- 유니티 브랜치 merge
- 유니티 머지
- stateauthority
- unity merge
- unity 병합
- m590 수리
- 오브젝트 깜빡임
- githubdesktopmerge
- networkobject.networkid
- m585
- 유니티 해상도 설정
- nav거리
- unity git
- 유니티
- 깃허브 데스크탑 합치기
- 유니티 해상도
- 유니티 합치기
- nav오브젝트사이거리
Archives
- Today
- Total
집게사장의 꿈
[디자인 패턴]MVP 본문
[출처] https://unity.com/kr/resources/level-up-your-code-with-game-programming-patterns
Level up your programming with game programming patterns
Our new e-book explains well-known design patterns and shares practical examples for using them in your Unity project.
unity.com
M(Model) : 데이터 값을 보유하는 컨테이너 역할. 로직, 계산을 수행하지 않음
V(View) : 인터페이스에 해당하며, 데이터를 화면에 표시하는 역할
C(Controller) : 런타임 시 게임 데이터 처리와 값의 변경을 계산하는 역할
각 파트에서 기능을 제한하면서 일을 처리, 단일 책임의 원칙의 개념


MVC의 변형인 MVP모델 데이터 변경 사항 수신을 위해 View 관련 코드가 필요했다. Controller 부분을 Presenter로 변경
Presenter : 두 레이어의 중개자 | 모델에서 데이터 검색 후 View에 표시하기 위해 형식을 지정. View를 통해 들어온 입력을 토대로 모델을 조작한다. 변경된 모델의 상태를 View에 전달.
View : 그래픽, 입력 | 입력을 처리하도록 변경, Presenter에게 입력값 전달과 변경된 사항을 받아들여 View 업데이트
Model : 데이터 | Presenter로 부터 들어온 메세지를 통해 상태변경. 상태 변경이 완료될 시 Presenter에게 알림.

ClickDamage | 버튼. 사용자의 입력이 있을 경우 입력을 입력을 전달한다. |
HealthPresenter | 중개자. 사용자의 입력에 따라 리셋, 데미지 등의 명령을 Health 모델로 전달 Health Model에서 변경된 내용을 전달받아 View에 전달 |
View | UI. 입력과 변경내용을 받아 사용자에게 노출 |
모델 변경사항을 바로 View에 표시하는 것이 아닌 중개자를 통해 저장된 Action을 통해 저장된 View 변경을 실행
View에서 모델로 가기 위한 중개자가 존재.




장점
-대규모 프로젝트 시 View Presenter의 분리로 유지보수의 용이
-사용자 인터페이스와 게임플레이 로직의 분리로 인한 단순화
-클래스의 분리와 세분화로 가독성 향상과 유지보수의 용이성
주의 사항
-앞선 디자인 패턴보다 큰 아키텍쳐 패턴이기에 클래스에 대한 책임과 계획이 필요
-해당 패턴이 모든 경우에서 유용한 것이 아니다. 데이터, 로직, 인터페이스의 분리로 얻을 수 있는 이점에 대해 고려
'기타 > 디자인패턴' 카테고리의 다른 글
[디자인 패턴]Observe (0) | 2024.05.21 |
---|---|
[디자인 패턴] State (0) | 2024.05.21 |
[디자인 패턴] Command (0) | 2024.05.21 |
[디자인 패턴] ObjectPool (0) | 2024.05.19 |
[디자인 패턴] Factory (0) | 2024.05.19 |