[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 만들기 실습
- 콘텐츠 브라우저에서 Blueprint Class 생성 → Actor 선택
- 이름: BP_MyLightObject
- 열어서 다음 구성 추가:
- Point Light Component
- Sphere Collision
- 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, 이벤트, 입력 흐름을 따라가본다.