관리 메뉴

fatalite

Unreal C++ 기초 (2) UObject와 UActor 그리고 Component 본문

게임/Unreal

Unreal C++ 기초 (2) UObject와 UActor 그리고 Component

fataliteforu 2023. 1. 13. 13:30

언리얼에서 UObject는 게임을 구성하는 기본 요소가 된다.

아직 기초 단계여서 언리얼 문서 기준으로는 자세하게 알 필요가 없다고 한다.

아마 게임 내의 오브젝트의 가장 기본적인 요소라고 생각하면 될 것 같다.

UActor && Component

UActor

UActor은 레벨(쉽게 말하면 맵)에 배치할 수 있는 오브젝트를 말한다.

레벨이 하나의 극장이라면, UActor은 연기를 위한 배우들 중 하나라고 생각하면 될 것 같다.

 

다음은 주요 함수들이다.

  • BeginPlay: 게임플레이 도중 오브젝트가 처음 등장(Spawn)했을 때 호출됩니다.
  • Tick: 지속적으로 이루어지는 작업을 하기 위해 프레임 당 한 번 호출됩니다.
  • EndPlay: 오브젝트가 게임플레이 공간을 떠날 때 호출됩니다

 

Component

UActor가 사람이라는 추상적인 것이라면, UActorComponent는 사람의 몸에 있는 부품이라고 생각하면 좋다.

예를 들어 Arm Component, Leg Component와 같이 말이다. 물론 언리얼에서는 메시, 콜리전 등으로 이루어져 있지만 말이다. 그렇게 UActor는 Root Component를 멤버로 가지면서 여기에 다른 Component를 자식으로 삼는게 가능하다.

 

다음은 컴포넌트의 주요 종류들이다.

  • UActorComponent 액터 컴포넌트
    베이스 컴포넌트입니다. 액터의 일부로 포함 가능합니다. 원한다면 Tick 시킬 수 있습니다. 액터 컴포넌트는 특정 액터에 연관지어지나, 월드의 특정 지점에 존재하지는 않습니다. 일반적으로 개념적 기능, 이를테면 AI 나 플레이어 입력 해석과 같은 것에 사용됩니다.
  • USceneComponent 씬 컴포넌트
    씬 컴포넌트는 트랜스폼이 있는 액터 컴포넌트입니다. 트랜스폼은 위치, 회전, 스케일로 정의되는 월드상의 포지션을 나타냅니다. 씬 컴포넌트는 계층구조 형태로 서로에게 붙일 수 있습니다. 액터의 위치, 회전, 스케일은 계층구조의 루트에 위치한 씬 컴포넌트에서 취할 수 있습니다.
  • UPrimitiveComponent 프리미티브 컴포넌트
    일정한 형태의 (메시 또는 파티클 시스템과 같은) 그래픽적 표현이 있는 씬 컴포넌트를 말합니다. 여기에는 재미난 피직스 및 콜리전 세팅이 들어있습니다.

만약 직접 레벨에 나타나야하는 액터의 경우, USceneComponent를 루트 컴포넌트를 삼아 Transform을 제공할 수 있다.

다른 경우는 Transform이 존재하지 않는다.