Component Choice

컴포넌트 구성 선택 흐름

필요한 책임을 먼저 고르면 상속보다 작은 컴포넌트 조합으로 Actor를 안정적으로 확장할 수 있다.

1. 타입을 먼저 고른다

Transform이 필요 없나?

UActorComponent

로직과 데이터만 가진다. 체력, 인벤토리, 상태 관리처럼 위치가 중요하지 않은 기능에 맞다.

Health Inventory

위치와 부착이 필요한가?

USceneComponent

Transform과 부모-자식 계층을 가진다. 다른 컴포넌트에 붙어 함께 이동해야 할 때 기준점이 된다.

Transform Attach

전용 기능이 이미 있나?

Primitive / Camera / SpringArm

렌더링, 충돌, 카메라, 카메라 거리 보정처럼 엔진이 제공하는 특화 컴포넌트를 우선 사용한다.

Mesh Camera SpringArm

2. 생성과 초기화 위치를 나눈다

1

UPROPERTY

에디터 노출과 GC 추적이 필요한 컴포넌트 포인터를 선언한다.

2

CreateDefaultSubobject

생성자에서 기본 컴포넌트를 만들고 이름을 고정한다.

3

SetupAttachment

Root, SpringArm, Socket처럼 움직임을 따라갈 부모를 연결한다.

4

BeginPlay

월드, 컨트롤러, 다른 Actor 참조가 준비된 뒤 런타임 값을 묶는다.

5

Tick

계속 변하는 값만 갱신하고, 불필요하면 비활성화한다.

Rule of Thumb

공간이 없으면 UActorComponent, 공간과 계층이 있으면 USceneComponent, 엔진 전용 기능이 있으면 특화 컴포넌트를 선택한 뒤 생성자, BeginPlay, Tick의 책임을 분리한다.