[UE5] 언리얼 엔진 입문

[언리얼 입문] 2 - 언리얼 오브젝트의 중심: Actor와 Component 이해하기

지망셍 2025. 6. 2. 19:57

언리얼에서 모든 게임 오브젝트는 Actor라는 개념을 중심으로 돌아간다.

그리고 이 Actor는 다양한 Component로 구성된다.

이번 편에서는 Actor와 Component의 개념, 역할, 구조, 그리고 실습 예제를 통해 이를 체감해본다.


1. Actor란 무엇인가?

AActor는 언리얼에서 월드에 존재할 수 있는 모든 오브젝트의 기본 단위다.

  • 위치, 회전, 스케일을 가진다 (Transform)
  • 레벨에 배치되거나 런타임에 생성된다
  • 컴포넌트를 통해 기능을 확장한다
AActor
 ├── RootComponent
 ├── MeshComponent
 ├── CollisionComponent
 └── CustomComponent


2. Component란 무엇인가?

UActorComponent는 Actor에 붙어서 특정 기능을 수행하는 구성 요소다.

  • 기능을 재사용 가능한 단위로 나눈다
  • SceneComponent는 위치를 가질 수 있음
  • Mesh, Collider, Sound, Script 로직 등 모든 기능은 컴포넌트로 표현 가능

3. Actor와 Component의 관계

특징 AActor UActorComponent

위치 정보 O 일부만 (Scene 계열)
레벨 배치 가능 불가능 (Actor에 부착되어야 함)
재사용성 낮음 높음
권장 방식 최소한의 Actor + 다양한 Component 조합  

언리얼은 **상속보다 구성(Composition)**을 권장하는 구조다.


4. 에디터에서 Actor 만들기 실습

  1. 콘텐츠 브라우저에서 Blueprint Class 생성 → Actor 선택
  2. 이름: BP_MyLightObject
  3. 열어서 다음 구성 추가:
    • Point Light Component
    • Sphere Collision
  4. Event Graph에서 BeginOverlap 이벤트 추가 → Toggle Visibility 실행

5. C++에서 Actor + Component 만들기 기초

// MyActor.h
UCLASS()
class AMyActor : public AActor
{
    GENERATED_BODY()

public:
    AMyActor();

protected:
    UPROPERTY(VisibleAnywhere)
    UStaticMeshComponent* Mesh;
};

// MyActor.cpp
AMyActor::AMyActor()
{
    Mesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Mesh"));
    RootComponent = Mesh;
}

에디터에서 이 Actor를 블루프린트로 확장하거나, 레벨에 배치하여 확인 가능


6. 실전 설계 팁

  • 컴포넌트 단위로 책임을 분리하면 유지보수가 쉬워진다
  • 예: UHealthComponent, UInventoryComponent, UInteractionComponent 등
  • 액터는 "껍데기", 로직은 컴포넌트가 담당하는 식으로 설계하자

마무리하며

Actor는 “월드에 존재하는 오브젝트”,

Component는 “그 오브젝트를 구성하는 기능들”이다.

이 구조를 이해하면 언리얼의 거의 모든 오브젝트가 눈에 보이기 시작한다.

다음 편에서는 이 오브젝트들이 어떤 흐름으로 실행되는지,

BeginPlay, Tick, 이벤트, 입력 흐름을 따라가본다.