Pink Transparent Star

Unity/레트로의 유니티 공부

[ Unity ] 컴포넌트(컴포지션) 패턴 [Composition]

채유나 2022. 9. 16. 15:27
728x90

* 본 내용은 레트로의 유니티 게임 프로그래밍 에센스 내용을 기반으로 정리하였습니다.

 

 

게임 개발하기 위해선 "재사용"하여 생산성을 높힌다. 기본적으로 "상속"을 하여 재사용성을 높히고 있다.

 

상속이란 무엇인가?

 

기본 구성을 짜여져 있는 부모클래스라고 불리고, 부모클래스를 상속해 기능을 확장 시키는 것을 자식클래스라고 말한다.

 

부모클래스
class Human
렌더 기능
물리 기능
애니메이션 기능
체력 기능
공격 기능
자식클래스 자식클래스
class NPC : Human class Monstar : Human
- 물리 기능
- 체력 기능
- 공격 기능
+ 대화 기능
+ 거래 기능
+ 퀘스트 기능
- 애니메이션 기능
+ 몬스터 애니메이션 기능
-물리 기능
+ 몬스터 물리 기능
+인공 지능 기능

Human의 기능 코드를 사용하지 못해 기존 코드를 변경하여 형태에 맞게 다시 작성하기 때문에 상속만 의존할 경우 오히려 재사용하기 힘든 경우가 많이 발생한다.

 

이를 위해 Unity의 컴포넌트 패턴을 이용하여 해결할 수 있다.

 

컴포넌트 패턴(컴포지션패턴)이란?

 

빈게임 오브젝트에 미리 만들어진 부품(컴포넌트)을 조립하여 완성된 오브젝트를 만든 방식을 이야기 한다.

아래와 같이 컴포넌트들을 조립하여 새로운 기능을 추가하여 새로운 오브젝트를 만들 수 있다.

 

컴포넌트 주머니
다리 얼굴
공격 인공지능 거래
물리 애니메이션 체력

  

Human NPC Monstar
다리 다리 다리
공격 얼굴 얼굴
물리 거래 애니메이션
얼굴 애니메이션 체력
애니메이션   공격
체력   인공지능

* 컴포넌트들은 다른 컴포넌트에 의존하지 않는 독립적인 존재이다.

* 원하는 기능만 선택적으로 추가와 삭제가 용의하여 재사용성을 높힌다.

 

728x90