컴포지션
객체 지향 프로그래밍에서 상속(Is-A)만으로 구조를 짜면 유지보수가 어렵다
그 이유는 상속이 깊은 경우에 최상위 부모 클래스의 변경이
그 하위 모든 자식 클래스에게 영향을 주기 때문이다
따라서,
컴포지션은 Has-A 관계를 구현하는 설계 방법으로 유지보수가 쉽다
기능이라는 개념을 상속으로 구현한다면, 많은 기능을 가지는 액터는 유지보수가 어렵지만
기능이라는 개념을 컴포지션으로 구현한다면, 많은 기능을 쉽게 탈착 하며 유지보수가 쉬워진다
언리얼 엔진의 컴포지션
액터를 구현할 때 다양한 기능을 유연하게 탈착할 수 있도록
각 기능을 규격화한 것이 컴포넌트이다
ex) 스태틱 메시 컴포넌트, 박스 컴포넌트, 무브먼트 컴포넌트, …
루트 컴포넌트
액터는 여러 개의 컴포넌트를 가질 수 있고
그 컴포넌트들 중에서도 대표하는 하나의 컴포넌트를
루트 컴포넌트라고 한다
자주 사용되는 컴포넌트
- 스태틱메시 컴포넌트
애니메이션 정보가 없는 애셋인 스태틱 메시를 가지고
시각적 기능과 물리적 기능을 제공할 수 있는 컴포넌트
- 스켈레탈메시 컴포넌트
애니메이션 정보가 있는 애셋인 스켈레탈 메시를 가지고
시각적 기능과 물리적 기능을 제공할 수 있는 컴포넌트
- 콜리전 컴포넌트
특정 모양(구/박스/캡슐)의 물리적 기능을 제공하는 컴포넌트.
- 무브먼트 컴포넌트
물체에 이동 기능을 제공하는 컴포넌트
- 카메라 컴포넌트
가상 세계를 플레이어의 모니터에 출력 해주는
기능을 제공하는 컴포넌트
언리얼 컴포넌트의 생성 시기
필수적 포함: CDO에 미리 다른 언리얼 오브젝트를 생성 후 포함한다
선택적 포함: CDO에는 빈 포인터로 두고, 런타임에서 생성 후 포함한다
컴포넌트와 액터의 관계
내가 소유한 언리얼 오브젝트를 SubObject
나를 소유한 언리얼 오브젝트를 Outer라고 부른다
'게임 엔진 > [코드조선] 언리얼' 카테고리의 다른 글
언리얼 기본 요소 - Component 상속 구조 (0) | 2024.05.11 |
---|---|
언리얼 기본 요소 - MovementComponent (0) | 2024.05.10 |
언리얼 자료구조 - TArray, TSet, TMap (0) | 2024.05.10 |
언리얼 문자열 - FName, FText (0) | 2024.05.10 |
언리얼 문자열 - TCHAR, FString (0) | 2024.05.10 |