본문 바로가기

언리얼5/공부기록

UE 액터와 컴포넌트 이해

언리얼 Actor란?

월드에 속한 컨텐츠의 기본 단위를 의미합니다.

 

액터가 서비스하는 기능

액터는 월드에 배치되기에 기본적으로 모두 Transform(좌표)값을 가지고 월드로부터 Tick ,시간 서비스를 제공받습니다.

 

액터의 역할과 컴포넌트

액터는 단순히 위 3가지를 서비스받는 논리적 개념이며 실질 컨텐츠의 게임로직 기능은 Component가 서비스합니다. 따라서 액터란

다수의 Componenet를 warpper와 같은 존재합니다.

 

루트 컴포넌트란?

Component는 다수의 컨포넌트는 액터가 가지고있는 계층구조로 디자인 됩니다.

이렇게 만들어진 계층의 최상위 계층 컨포넌트를 Root Componenet라고 합니다.

액터는 루트컴포넌트를 가지고있어야 하고 루트 컴포넌트의 트랜스폼이 액터의 트랜스폼을 의미하게 됩니다.

 

 

 

 

액터

기본적인 게임플레이 요소인 액터와 오브젝트에 대한 설명입니다.

docs.unrealengine.com

 

CreateDefaultSubobject , NewObject, SpawnActor

언리얼 엔진에서의 UObject는 오브젝트 프로토입을 기본으로 합니다. 각 UClass는 UObject와 연관된 CDO(Class Default Object)라고 불리는 디폴트 인스턴스를 갖습니다. 이 인스턴스는 엔진이 초기화 될때 클래스 생성자를 통해 최초로 단 한번 할당됩니다. 이후에 생성자는 절대로 다시 불려지지 않고 새로운 UObject를 생성시 복사를 생성 합니다.

 

이것이 의미하는 것은 UObject 생성자는 어떠한 런타임 로직을 포함 할수 없다는 것입니다. 

만약 Actor Component와 같은 서브 오브젝트들을 포함하고 있는 오브젝트라면, 이러한 디폴트 오브젝트들은 처음에 생성되어져야 합니다. 

  • UObject::CreateDefaultSubobject
    UObject의 생성자에서만 호출합니다. 무엇보다도 서브오브젝트 클래스의 CDO 인스턴스 생성합니다. 생성된 오브젝트는 해당 오브젝트 클래스가 인스턴스화될 때 속성의 기본 오브젝트가 됩니다.
  • NewObject<T>
    엔진이 초기화 된 이후 오브젝트 생성을 위해 일반적으로 사용합니다. UObject의 생성자에서 사용하지 않도록 합니다. UObject 생성자에서 호출하지 않아야 합니다.
  • UWorld::SpawnActor<T>
    레벨에서 location과 rotation 정보를 갖는 액터를 스폰하기 위한 편의 기능입니다. UObject 생성자에서 호출하지 않아야 합니다.