본문 바로가기

Unreal Engine

[UE4] Component (Actor Component / Scene Component / Primitive Component)

UE 4.27 Document: https://docs.unrealengine.com/4.27/en-US/ProgrammingAndScripting/ProgrammingWithCPP/UnrealArchitecture/Actors/Components/

 

컴포넌트란?

Actor 에 붙일 수 있는 오브젝트 타입이다.

컴포넌트 형태로만 렌더링, 충돌 구현, 오디오 재생, 게임 내부에서의 상호작용 등을 구현할 수 있다.

 

자주 쓰이는 컴포넌트 클래스 3종류 : Actor Component, Scene Component, Primitive Component

Actor Components

// Engine\Source\Runtime\Engine\Classes\Components\ActorComponent.h
class ENGINE_API UActorComponent : public UObject, public IInterface_AssetUserData

모든 컴포넌트의 베이스 컴포넌트이다. Transform 이 없기 때문에 위치, 회전값이 없으며 렌더링 되지 않는다.

액터의 움직임, 인벤토리, 속성 관리 등등의 추상적인 동작 구현에 적절하다.

 

Scene Components

// Engine\Source\Runtime\Engine\Classes\Components\SceneComponent.h
class ENGINE_API USceneComponent : public UActorComponent

Actor Component 를 상속받은 컴포넌트. Transform 을 가지나 렌더링되지 않는다.

카메라, 스프링 팔, 물리적인 힘과 제약 조건, 오디오 등 렌더링이 필요없는 위치 기반 동작 구현에 적절하다.

 

Primitive Components

// Engine\Source\Runtime\Engine\Classes\Components\PrimitiveComponent.h
class ENGINE_API UPrimitiveComponent : public USceneComponent, public INavRelevantInterface

Scene Component 를 상속받은 컴포넌트. Transform 을 가지며 렌더링 된다.

시각적 요소의 렌더링, 충돌 영역 등의 기하학적 표현에 사용되는 베이스 클래스.

스태틱 메시, 스켈레탈 메시, 스프라이트나 빌보드, 파티클 시스템, 박스, 캡슐 등의 충돌 볼륨 등이 포함된다.

material 은 멤버 변수로 갖지 않지만, 대신 비어있는 virtual get/set 함수가 존재한다. (GetMaterial / SetMaterial)

 

Mesh Components

// Engine\Source\Runtime\Engine\Classes\Components\MeshComponent.h
class ENGINE_API UMeshComponent : public UPrimitiveComponent

Primitive Component 를 상속받은 컴포넌트. Mesh 와 material 배열을 가진다.

Mesh 를 렌더링하는 컴포넌트들의 베이스 클래스.