내일배움캠프_언리얼9기

내일배움캠프 51일차 TIL 2026/07/03

begin-play 2026. 7. 3. 21:09

[TIL] Unreal Engine - C++ 커스텀 컴포넌트(Component) 구조 이해하기

📌 1. 컴포넌트(Component)란?

  • 액터(Actor)에 부착하여 특정 기능이나 외형을 부여하는 조립식 부품.
  • 레고 블록처럼 필요한 기능을 컴포넌트 형태로 만들어 액터에 자유롭게 탈부착할 수 있음.
  • 핵심 이점: 모듈화, 코드 재사용성 극대화, 액터 클래스의 경량화.

📌 2. 컴포넌트의 두 가지 핵심 종류

언리얼 C++에서 컴포넌트를 만들 때는 목적으로 고르고 상속받아야 한다.

종류 상속 클래스 트랜스포름(위치/회전) 주요 용도
씬 컴포넌트 USceneComponent O 외형(Mesh), 소리(Audio), 빛(Light) 등 공간적 위치가 필요한 기능
액터 컴포넌트 UActorComponent X 체력 시스템, 인벤토리, 스킬 쿨타임 등 순수 데이터 및 로직 처리

📌 3. C++ 커스텀 컴포넌트 구현 핵심 포인트

1) 매크로 설정 (.h)

  • UCLASS 매크로 내부에 meta=(BlueprintSpawnableComponent)를 넣어줘야 언리얼 에디터(블루프린트)의 [+추가] 메뉴에서 검색 및 부착이 가능해짐.
  • 블루프린트 노출을 위해 변수에는 UPROPERTY, 함수에는 UFUNCTION 매크로를 적절히 활용.

2) 틱(Tick) 최적화 (.cpp)

  • 매 프레임 연산이 필요 없는 컴포넌트(예: 체력 관리)라면 생성자에서 PrimaryComponentTick.bCanEverTick = false;를 설정하여 성능을 최적화하는 것이 좋음.

3) 액터에 장착하는 두 가지 방법

  • C++ 코드 방식: 부모 액터 생성자에서 CreateDefaultSubobject<T>()를 사용하여 고정 부착.
  • 에디터 방식: 블루프린트 컴포넌트 창에서 마우스 클릭으로 유연하게 부착.

✍️ 한 줄 요약 (Takeaway)

"액터에 코드를 몰아넣는 '스파게티 액터'를 방지하려면, 독립적인 기능(체력, 인벤토리 등)은 UActorComponent를 상속받은 C++ 커스텀 컴포넌트로 모듈화하여 재사용성을 높여야 한다!"