Actor
레벨에 배치될 수 있는 모든 오브젝트의 기본 클래스
이동, 회전, 스케일과 같은 3D Transform을 지원하는 범용 클래스이다.
액터는 Transform 데이터를 직접 저장하지 않는다.
액터의 루트 컴포넌트에 트랜스폼 데이터가 존재할 경우, 그 데이터를 사용한다.
액터를 컴포넌트를 담는 그릇으로 생각해 볼 수 있다.
여러 유형의 컴포넌트를 사용하여 액터의 이동 및 렌더링 방식 등을 제어 가능
액터의 또다른 주요 기능은 플레이 도중 네트워크를 통한 프로퍼티 및 함수 호출의 리플리케이션
리플리케이션Replication
네트워크 멀티플레이어 게임 처리 시 월드의 동기화 상태를 유지하는데 사용됨
모든 클라이언트에서의 게임 상태에에 대한 완벽 제어를 가능케 하기 위해
프로퍼티 값과 함수 호출 둘 다 리플리케이션 시킬 수 있다
이미 레벨에 배치된 액터에 대해서, LoadMap이 발생했을때나, AddToWorld가 호출되었을때 발생
디스크에서의 로드와 거의 똑같지만, 액터를 디스크에서 로드하기 보단 에디터에서 복사해 온다.
액터를 스폰(인스터싱)할 때 따르게 되는 경로
스폰 시 노출Expose On Spawn 설정된 프로퍼티가 있으면
액터는 디퍼드(유예시켜 나중에 한번에 몰아서) 스폰이 가능
액터는 기본적으로 가바지 콜렉팅되지 않고, Destroy()를 호출하여 명시적으로 소멸시킬 수 있다.
액터가 킬 대기 상태로 마킹되며, 레벨의 액터 배열에서 제거됨
액터의 수명이 막바지에 다다랐음을 보증하기 위해 여러 곳에서 호출된다.
EndPlay가 호출되는 경우는 다음과 같다.
-Destroy 명시적 호출
-에디터에서 플레이 종료
-Level Transition (심리스 트래블 또는 맵 로드) = 레벨 전환
-액터가 들어있는 스트리밍 레벨 언로드
-액터의 수명 만료
-어플리케이션 종료 (모든 액터 소멸)
EndPlay 이후 액터는 RF_PendingKill 마킹되어 다음 가비지 컬렉션 주기동안 할당해제Deallocate된다.
https://docs.unrealengine.com/5.0/en-US/API/Runtime/Engine/GameFramework/AActor/
bool ActorHasTag: 이 액터의 태그 배열에 파라미터로 제공된 태그가 있는지 확인
FTransform ActorToWorld : 루트 컴포넌트의 local to world 변환값 리턴
UActorComponent* AddComponent: 새 컴포넌트를 만들고 이것이 호출되는 액터에 소유권을 할당한다
void AddActorLocalOffset : 로컬 참조 프레임에서 컴포넌트에 파라미터로 제공된 델타 위치값 추가
void AddActorLocalRotation: 로컬 참조 프레임에서 컴포넌트에 파라미터로 제공된 델타 회전값 추가
void AddActorLocalTransform: 로컬 참조 프레임에서 컴포넌트에 파라미터로 제공된 델타 Transform값 추가
void AddActorWorldOffset : 월드공간에서 컴포넌트에 파라미터로 제공된 델타 위치값 추가
void AddActorWorldRotation: 월드공간에서 컴포넌트에 파라미터로 제공된 델타 회전값 추가
void AddActorWorldTransform: 월드공간에서 컴포넌트에 파라미터로 제공된 델타 Transform값 추가
void AttachToActor: 호출한 액터의 루트 컴포넌트를 제공한 액터의 루트 컴포넌트에 연결한다
void AttachToComponent: 호출한 액터의 루트 컴포넌트를 제공한 컴포넌트에 연결한다(소켓 가능)
void BeginPlay: 이 액터가 시작될때 호출되는, 재정의 가능한 함수
bool Destroy: 액터 파괴
void Destroyed: 게임플레이나 에디터에서 명시적으로 소멸될 때 호출됨. 레벨 스트리밍이나 게임플레이 종료 중에는 호출x
void EndPlay: 이 액터가 레벨에서 제거될 때마다 호출되는 재정의 가능한 함수
void EnableInput: 이 액터를 PlayerController가 처리하는 입력 스택에 푸쉬
FQuat GetActorQuat: 이 액터의 루트 컴포넌트 쿼터니언 반환
FVector GetActorRelativeScale3D: 액터의 상대적 스케일을 3D로 반환
float GetActorTickInterval: 이 액터의 기본 틱 함수의 틱 간격을 반환
float GetActorTimeDilation: 액터의 TimeDilation을 가져온다. 파라미터로 World를 넣을 수 있다
void GetAllChildActors: 모든 자식 액터들의 배열을 가져온다. 참조자 액터배열을 파라미터로 넣는다
Actor GetAttachParentActor: 루트 컴포넌트로부터 위로 올라가서 Attach된 부모 액터를 리턴
UActorComponent GetComponentByClass: 컴포넌트 배열을 검색하고, 처음 발견된 지정된 클래스의 컴포넌트를 리턴
void GetComponents: 지정된 컴포넌트 클래스에서 파생된 모든 컴포넌트를 가져온다. 참조자 배열을 파라미터로 넣는다
float GetInputAxisValue: 이 액터에 대해 입력이 활성화 된 경우 입력 축 키의 값을 가져온다.
ULevel* GetLevle: 이 액터가 소속된 ULevel을 반환
void GetOverlappingActors: 이 액터와 겹쳐있는 모든 액터를 반환
void GetOverlappingComponents: 이 액터와 겹쳐있는 모든 컴포넌트를 반환
float GetSquaredDistanceTo: 이 액터에서 다른 액터까지의 거리의 제곱을 반환
float GetSquaredHorizontalDistanceTo: Z값을 무시하고, 이 액터에서 다른 액터까지의 거리의 제곱을 반환
float GetVerticalDistanceTo: XY값을 무시하고, 이 액터에서 다른 액터까지의 거리의 제곱을 반환
FVector GetVelocity: 무브먼트 컴포넌트를 사용하거나, 물리가 적용된 경우 속도를 반환