Model
- 데이터 + 로직
- C# 객체 / ScriptableObject
- 보통은 Presenter가 private로 내부적으로 생성함
View
- 디스플레이 + 표시형식 로직
- Monobehaviour
- 값을 넘겨주면 표시형식을 만드는 정도의 로직은 가지고 있음.
Presenter
- 중계자 역할
- Monobehaviour
- Model의 직접 레퍼런스와 View의 인터페이스 레퍼런스를 가짐.
(내가 구현할때는 굳이 인터페이스까지 쓰진 않을 예정)
- Model과 View를 이벤트로 연결해줌.
- 다른 Presenter나 Model의 레퍼런스를 가지기도 함
View는 통채로 선언해주는 경우도 있지만, Text, Transform 등을 각각의 개별적인 View로 보는 경우도 있다.
간단한 스크립트에서는 직접 레퍼런스를 잡아서
Model + Presenter 만 존재하게 하고, View쪽의 역할이 커진다 싶을때 View로 나눠주는 방법도 있을 듯.
Unity의 MVP가 웹이랑 다른 점
Web에서는 View와 Presenter를 확실하게 나눌 수 있지만
Unity의 화면은 전부 View로 간주할 수 있기 때문에 Presenter와 완전히 나누기 애매하며(Transform등의 컴포넌트가 존재하기 때문에 재 참조하게 되버린다), 억지로 Presenter와 View를 분리한 경우에는 Presenter는 값의 매개체일 뿐 Presenter가 존재하는 의미는 거의 없어진다.
자동 MVP 스크립트생성
https://github.com/MasaKoha/MVPScriptGenerator4Unity
'🌍 Unity 연구 > 아키텍처' 카테고리의 다른 글
Web 출신의 Unity 엔지니어의 대규모 게임의 기초 설계 (0) | 2021.09.21 |
---|---|
UIView (0) | 2021.09.19 |
MVC / MVP / MVVM 패턴 자료수집 (0) | 2021.09.17 |