본문 바로가기
Unreal/Manual

Unreal Mesh Socket 위치에서 SpawnActorDeferred 하기

by Dev_카페인 2024. 1. 12.
반응형

[Unreal/C++] Mesh Socket 위치에서 SpawnActorDeferred 하기

 

언리얼 엔진에서 액터를 생성하는 방법입니다.

 

Spawn Actor와 다르게 SpawnActorDeferred는 모든 설정이 완료된 후 FinishSpawning을 호출해주어야 정상적으로 배치됩니다.

 

FVector location = GetMesh()->GetSocketLocation("ThrowSocket");	// 소켓 이름으로 소켓의 위치를 가져온다.
FTransform transform(location);	// SpawnActorDeferred를 하기 위한 Transform을 설정한다.
AFireBall* fireBall = GetWorld()->SpawnActorDeferred<AFireBall>(FireBall, transform, this, this, ESpawnActorCollisionHandlingMethod::AlwaysSpawn); // Spawn을 위한 설정을한다.
if (fireBall == nullptr) return;	// Spawn이 되어 객체가 설정되었는지 확인한다.

// 설정이 모두 완료된 후 FinishSpawning을 호출하여 세계에 배치 시킨다.
fireBall->FinishSpawning(fireBall->GetTransform());

 

SpawnActorDeferred<Class>(TSubclassOf<Class>, transform, this, this, ESpawnActorCollisionHandlingMethod::AlwaysSpawn); // Spawn을 위한 설정을한다.

 

// 함수 원형

template< class T >
	T* SpawnActorDeferred(
		UClass* Class,
		FTransform const& Transform,
		AActor* Owner = nullptr,
		APawn* Instigator = nullptr,
		ESpawnActorCollisionHandlingMethod CollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::Undefined
		)

 

* 주어진 클래스를 생성하고 클래스 T 포인터를 반환하며 강제로 월드 변환을 설정합니다(이것은 스케일도 허용함을 참고하세요). 블루프린트 컨스트럭션 스크립트를 실행하지 않습니다.

* 호출자에게 사전에 매개변수를 설정할 수 있는 기회를 제공합니다. 호출자는 구성 호출을 담당합니다.

* UGameplayStatics::FinishSpawningActor를 호출해야 합니다. (AActor::OnConstruction 참고)

 

 

 

UWorld::SpawnActorDeferred

Spawns given class and returns class T pointer, forcibly sets world transform (note this allows scale as well).

docs.unrealengine.com

 

 

AActor::OnConstruction

Called when an instance of this class is placed (in editor) or spawned.

docs.unrealengine.com

 

반응형