1. Actor 란?
- 액터란, 레벨에 배치할 수 있는 오브젝트
- 액터는
이동
,회전
,스케일
과 같은 3D 트랜스폼을 지원하는 범용 클래스 C++
또는 BluePrint를 통해 생성(스폰) 및 소멸 가능C++
에서 AActor는 모든 액터의 베이스 클래스- 액터는 트랜스폼 데이터를 직접 저장하지 않고, 액터의 루트 컴포넌트에 트랜스폼 데이터가 존재하는 경우 그 데이터를 사용한다.
액터 생성
- AActor 클래스 인스턴스를 새로 생성하는 것을
Spawn
(스폰) 이라 한다.- 범용 함수 SpawnActor()나, 그 특수 템플릿 버전을 사용하면 된다
Actor의 생명 주기
2. 액터의 컴포넌트
- 액터는
씬 컴포넌트 계층 구조를 갖는 것을 지원
UActorComponent 액터 컴포넌트
- 베이스 컴포넌트이고 액터의 일부로 포함이 가능
Tick
가능- Actor 컴포넌트는 특정 액터에 연관짓거나, 월드의 특정 지점에 존재하지 않음
- 일반적으로
개념적 기능
(Ex) AI 나 플레이어 입력 해석)과 같은 것에 사용
USceneComponent 씬 컴포넌트
트랜스폼
있는 액터 컴포넌트- 트랜스폼은
위치
,회전
,스케일
로 정의되는월드상의 포지션
을 나타냄
- 트랜스폼은
- 계층 구조 형태로 서로에게 붙일 수 있음
- 액터의 위치, 회전, 스케일은 계층 구조의
루트
에 위치한 씬 컴포넌트에서 취할 수 있다
UPrimitiveComponent 프리미티브 컴포넌트
- 일정한 형태의(메시 또는 파티클 시스템과 같은)
그래픽적 표현
이 있는씬 컴포넌트
를 말함 피직스
및콜리전 세팅
이 들어가 있음
RootComponent 루트 컴포넌트
- 어느 컴포넌트가
액터의 루트 역할
을 할지 나타내는 컴포넌트액터 자체에는 트랜스폼 정보가 없다. 대신 루트 컴포넌트의 트랜스폼에 의존하는데
컴포넌트가
씬 컴포넌트
일 경우, 액터에트랜스폼 정보
를 제공해주고
아닐 경우, 액터에는 트랜스폼 정보가없다
부착된 다른 컴포넌트에는, 부착된 그 컴포넌트를 기준으로 한 트랜스폼 정보가 존재한다
액터의 계층 구조 예제
3. Tick(틱)
- 언리얼 엔진에서의
액터 업데이트 방법
을 의미 - 모든 액터는 매 프레임, 또는 최소, 또는 사용자 정의 간격마다 틱을 하여 필요한 동작이나 계산을
업데이트
할 수 있다.Unity의 Update와 비슷한 개념
- 액터는 모두 기본적으로
Tick()
함수를 통해 틱 가능ActorComponent 역시, TickComponent() 함수를 사용해야 한다는 점이 다르지만,
기본적으로 업데이트 가능
자세한 내용은 Components 문서에서 확인 가능하다.
4. Replication(리플리케이션)
- Replication (리플리케이션)은 네트워크 멀티플레이어 게임 처리시 월드의 동기화 상태를 유지하는 데 사용.
- 모든 클라이언트에서의 게임 상태에 대한 완벽 제어를 가능하게 하기 위해, 프로퍼티 값과 함수 호출 둘 다 리플리케이트시킬 수 있다.
5. 액터의 소멸
- 액터는 일반적으로 가비지 콜렉팅되지 않는데, 월드 오브젝트가 액터 레퍼런스 목록을 저장하기 때문이다.
- 액터는
Destroy()
를 호출하여 명시적으로 소멸시킬 수 있습니다.
그러면 레벨에서 제거되어 pending kill (킬 대기) 상태로 마킹, 잠시 후 다음 가비지 컬렉션 때 지워진다는 뜻입니다.