유니티 기능 모듈화 시스템

정선호·2023년 9월 17일
0

Original

목록 보기
5/5

하나의 오브젝트가 여러 가지 공통된 기능과, 각각의 유니크한 기능들을 포함하고 있는 다양한 타입으로 나뉠 때 유용하게 사용할 수 있는 기법

명세

  • 오브젝트는 모노비헤이비어를 사용하고, 씬에 소환되는 게임오브젝트이다.
  • 모든 타입의 오브젝트는 공통된 기능들을 갖고 있다.
  • 각 타입의 오브젝트는 자신만이 사용할 수 있는 특수한 기능들을 갖고 있다.
  • 기능들은 오브젝트의 상태를 변화시키거나, 오브젝트의 상태가 변화함에 따라 기믹을 발생시킬 수 있다.
  • 공통 기능과 특수한 기능들의 개발 도중 종류가 추가될 수 있다.

구상

디폴트 오브젝트를 상속받는 콘크리트 오브젝트에서 필요한 모듈들을 선언하는 방식으로 구현하였다.
간략한 클래스 다이어그램은 다음과 같다.

베이스 클래스

모노비헤이비어를 상속받는 클래스이며, 오브젝트를 생성/삭제/관리하는 매니저 클래스는 베이스 클래스를 토대로 각 오브젝트들을 관리한다.

  • 오브젝트의 기본 정보(트랜스폼, 오브젝트 고유 id 등)의 데이터를 관리한다.
  • 모노비헤이비어의 Awake, Start등의 라이프사이클 함수에 모듈 인터페이스 리스트의 라이프사이클 함수들을 호출하여 모든 모듈들이 모노비헤이비어 작업을 수행할 수 있도록 한다.

모듈 인터페이스

베이스 클래스에서 수행하는 라이프사이클을 모듈들도 수행할 수 있게 인터페이스화 해놓는다.

콘크리트 모듈

각각의 모듈들이 라이프사이클에서 어떠한 행동을 할 건지 정의하는 콘크리트 클래스이다.

래퍼 클래스

베이스 클래스를 상속받는 클래스이며, 콘크리트 모듈들을 선언하여 실질적으로 사용하는 클래스이다.

profile
학습한 내용을 빠르게 다시 찾기 위한 저장소

0개의 댓글