Actor, 액터란 레벨에 배치할 수 있는 오브젝트를 말합니다. 액터는 이동, 회전, 스케일과 같은 3D 트랜스폼을 지원하는 범용 클래스입니다. 액터는 게임플레이 코드(C++ 또는 블루프린트)를 통해 생성(스폰) 및 소멸 가능합니다. C++ 에서 AActor 는 모든 액터의 베이스 클래스입니다.
액터에는 여러가지 유형이 있으며, 몇 가지 예를 들면 다음과 같습니다: StaticMeshActor, CameraActor, PlayerStartActor.
액터는 위치와 회전, 스케일 같은 트랜스폼 데이터를 직접 저장하지 않습니다. 액터의 루트 컴포넌트에 대한 트랜스폼 데이터(있는 경우)를 대신 사용합니다.
액터 생성하기
AActor
클래스의 새 인스턴스를 생성하는 것을 스폰 이라고 합니다. 일반 SpawnActor()
함수나 특화된 템플릿 버전 중 하나를 사용하여 스폰할 수 있습니다.
게임플레이를 위해 AActor
클래스의 인스턴스를 생성하는 다양한 방법에 대한 자세한 내용은 액터 스폰 및 소멸을 참조하세요.
컴포넌트
액터(Actors) 는 어떤 의미에서 컴포넌트라고 하는 특별한 타입의 오브젝트(Objects) 를 담는 컨테이너로 생각할 수 있습니다. 다양한 타입의 컴포넌트를 사용하여 액터 의 이동 및 렌더링 방식 등을 제어할 수 있습니다. 또 다른 액터의 주요 기능은 플레이 도중 네트워크를 통해 프로퍼티 및 함수 호출을 리플리케이션 하는 것입니다.
컴포넌트는 생성될 때 자신이 포함된 액터에 연결됩니다.
몇 가지 주요 컴포넌트 타입은 다음과 같습니다.
-
UActorComponent: 베이스 컴포넌트입니다. 액터의 일부로 포함될 수 있습니다. 원하면 틱하게 할 수 있습니다. 액터 컴포넌트(ActorComponents)는 특정 액터와 연결되어 있지만, 월드의 특정 위치에 존재하지는 않습니다. 보통 AI 또는 플레이어 입력 해석과 같은 개념적 기능에 사용됩니다.
-
USceneComponent: 씬 컴포넌트(SceneComponents)는 트랜스폼이 있는 액터 컴포넌트입니다. 트랜스폼은 월드에서의 위치로, 위치와 회전, 스케일로 정의됩니다. 씬 컴포넌트는 계층형 방식으로 서로 어태치될 수 있습니다. 액터의 위치와 회전, 스케일은 계층구조의 루트에 있는 씬 컴포넌트에서 가져옵니다.
-
UPrimitiveComponent: 프리미티브 컴포넌트(PrimitiveComponents)는 메시나 파티클 시스템 같은 일종의 그래픽 표현이 있는 씬 컴포넌트입니다. 여기에는 흥미로운 피직스 및 콜리전 세팅이 많이 있습니다.
액터는 씬 컴포넌트의 계층구조를 포함할 수 있습니다. 각 액터에는 액터의 루트 역할을 할 컴포넌트를 지정하는 RootComponent
프로퍼티도 있습니다. 액터 자체에는 트랜스폼이 없으므로 위치,
회전, 스케일도 없습니다. 대신, 자신의 컴포넌트, 좀 더 구체적으로 루트 컴포넌트의 트랜스폼에 의존합니다. 이 컴포넌트가 씬 컴포넌트 인 경우, 액터에 대한
트랜스폼 정보를 제공합니다. 그렇지 않다면, 해당 액터에는 트랜스폼이 없습니다. 어태치된 다른 컴포넌트에는, 어태치된 대상 컴포넌트를 기준으로 한 트랜스폼 정보가 있습니다.
액터와 계층구조의 예시는 다음과 같습니다.
GoldPickup 액터 | 계층구조 |
---|---|
![]() |
|
티킹
티킹은 액터가 언리얼 엔진에서 업데이트되는 방식을 나타냅니다. 모든 액터에는 프레임마다, 또는 최소한 사용자 정의 간격마다 틱할 수 있는 기능이 있으므로, 필요한 동작이나 계산을 업데이트할 수 있습니다.
액터는 모두 기본적으로 Tick()
함수를 통해 틱할 수 있습니다.
액터 컴포넌트 도 기본적으로 업데이트될 수 있지만, TickComponent()
함수를 사용하여 업데이트됩니다. 자세한 내용은
컴포넌트 페이지의 업데이트 섹션을 참조하세요.
라이프사이클
액터를 게임에서 생성하고 제거하는 방법에 대한 자세한 내용은 액터 라이프사이클 문서를 참조하세요.
리플리케이션
리플리케이션 은 네트워크 멀티플레이어 게임을 처리할 때 월드 내 액터의 동기화 상태를 유지하는 데 사용됩니다. 프로퍼티 값과 함수 호출을 모두 리플리케이트할 수 있으므로, 모든 클라이언트에서 게임의 스테이트를 완벽하게 제어할 수 있습니다.
액터 소멸하기
월드 오브젝트가 액터 레퍼런스 목록을 보유하므로 액터는 일반적으로 가비지 컬렉션되지 않습니다. 액터는 Destroy()
를 호출하여 명시적으로 소멸시킬 수 있습니다. 그러면 액터가 레벨에서 제거되고
'보류 중인 킬'로 표시됩니다. 즉, 남아 있다가 다음 가비지 컬렉션 시 클린업됩니다.