Unity 내일배움캠프 TIL 1031 | MVC 패턴

PikminProtectionAssociation·2023년 10월 31일
0

Unity 내일배움캠프

목록 보기
67/89
post-thumbnail

💡 MVC 패턴

🥑 정의

  • 데이터(Model)와 로직(Controller)을 분리해주는 디자인 패턴
  • Model, View, Controller로 구성
  • Model
    • 게임의 데이터 (로직이 아닌 순수 데이터)
  • View
    • 게임의 핵심 로직
    • Model들을 조작하고 업데이트 된 Model들을 View에 통지
  • View
    • 게임 내 외적으로 보이는 모든 요소
    • Controller에서 받은 데이터를 화면에 출력하는 역할
  • Model과 View는 Controller의 존재를 몰라야 한다.

🌽 역할 분담

  1. Model
    • 데이터가 변하는 로직은 Model에서 짜야 한다.
      -> 유저의 입력을 바탕으로 Controller에서 계산해 넣기(X)
    • 데이터가 바뀌면 OnChange를 실행하여 ViewEvent를 실행
  2. View
    • Model을 받아서 유저에게 보여주는 역할
  3. Controller
    • 사용자의 데이터 조작을 위한 Input 처리를 담당
    • 유저와 상호작용 하는 부분
  • Model과 View의 관계는 옵저버 패턴
    • Model : 관찰 대상
      View : 관찰자
  • Model과 View 사이의 의존성이 높은 것이 단점

🥔 Unity에 적용

  • 필요 사항
    1. Model의 변화를 View가 감지
    2. View에서 발생되는 Event를 Controller에 전달
    3. 각각 Controller들끼리 쉬운 통신

🥕 MVP와 비교

  • MVP
    • Model, View, Presenter로 구성
  • 동작
    1. 사용자의 Action이 View를 통해 들어옴
    2. View는 Presenter에게 데이터 요청
    3. Presenter는 Model에게 데이터 요청
    4. Model은 Presenter에게 요청 받은 데이터 전달
    5. Presenter는 View에게 요청 받은 데이터 전달
    6. View는 전달 받은 데이터를 화면에 출력
  • MVC 패턴과 달리 Model과 View의 의존성이 없다.
    -> 대신 View와 Presenter가 높은 의존성을 갖게 됨

🥦 Zenject

  • 의존성 주입(Dependency Injection) 프레임워크
  • 프로그램의 초기화 부분에서 미리 어떤 클래스 혹은 인터페이스가 어떤 인스턴스를 받을지 정해놓고, 실행 중에 서로 다른 구성요소 간 종속성과 통신을 쉽고 느슨하게 관리
  • 대부분 게임을 만들 때 구성요소 별로 Singleton을 사용해 관리
    -> 어느 시점에 어떻게 초기화 되는지 보장하기 어려움
    -> Zenject를 사용하면 초기화 시점이 보장되고, 인터페이스 할당도 가능하여 로직 수정이 쉬워짐

출처 - [Unity] 유니티 MVC 패턴 적용하기
출처 - Unity에서의 MVC 패턴
출처 - [디자인패턴] MVC, MVP, MVVM 비교



왜 글마다 MVC에 대한 정의가 다 다른지 모르겠다..!!!!

그래서 너네 서로 아냐고 모르냐고 ;ㅁ;



오늘은 여기까지..끗..

0개의 댓글

관련 채용 정보