unreal 5기

251027 언리얼엔진 본캠프 53일차 UActorComponent와 USceneComponent

parkjinnam 2025. 10. 27. 21:27

UActorComponent와 USceneComponent

팀프로젝트가 진행되면서 언리얼엔진을 본격적으로 C++로 작성하는 일이 많아지다 보니 자연스럽게 액터를 신규 작성하는 일이 많아지고 있다. 그러다 보면 컴포넌트를 직접 액터에 붙여주는 경우가 많은데 기본적으로 Scene컴포넌트를 Root로 지정하는 경우가 많다.(그렇게 배웠으니) 왜 이렇게 쓰는지 궁금해졌으니 오늘은 이런 액터컴포넌트와 씬컴포넌트에 대해서 자세하게 알아보도록 하자

 

UActorComponent

UActorComponent는 월드 내에 특정한 위치 값을 가지지 않는 액터에 추가 가능한 기능이나 로직을 담당하는 기본 클래스이다. 예를들어 UHealthComponentUInputComponentUAIPerceptionComponent과 같이 플레이어의 체력이나 입력을 관리하는 컴포넌트나 AI가 주변을 인지하도록 돕는 컴포넌트들을 만들때 UActorComponent를 상속받아 작성하게 된다. 이렇게 작성한 컴포넌트는 어떤 액터에든 붙여서 해당 기능을 추가할 수 있다.

 

USceneComponent

USceneComponent는 UActorComponent의 모든 기능을 가지면서 월드 내의 위치 정보 또한 갖고있는 클래스이다. 이 위치 정보를 갖는다는 특성 때문에 USceneComponent는 다른 USceneComponent에 부착할 수 있으며 이를 통해서 계층 구조를 만들 수 있다. 파생클래스로는 UStaticMeshCompoenent, UCameraComponent, USpringArmComponent 등 익히 액터를 생성하면서 봐왔던 컴포넌트 들이며 이런 컴포넌트들을 다른 USceneComponent에 부착할 수 있다 문제는 모든 액터는 반드시 1개의 USceneComponent를 루트 컴포넌트(RootComponent)로 가져야한다. 이 루트 컴포넌트가 월드에서의 액터의 위치가 된다.