SpawnActor (스폰을 지연시키는 방법)
언리얼 엔진에서 Spawing을 지연시키는 방법이 2가지가 있다. 첫번째로, 처음부터 SpawningActorDeferred를 사용하는 방법이 있다. 두번째로, SpawnActor를 사용하되 bDeferConstruciton = true 설정을 하여 스폰 지연시키는 방법이 있다.
목차
Spawning을 지연시키는 방법
문제 상황
SpawnActor를 하는 시점을 지연 시키고 싶다.
이유 예)
- 데이터가 다 세팅되지 않았다.
- SpawnActor가 끝나기 전에 체크하고 싶은게 있다.
Spawning을 지연시키는 2가지 방법
1. SpawningActorDeferred를 사용
- 엄밀히 말하면 Spawning을 지연시키는 방법은 아니다. 하지만 BeginPlay() 이전을 조정할 수 있다.
- OnConstruction() 전에 실행되기 때문에 Spawn 시킨 후 작업(ex. transform, rotation, etc) 후에 BeginPlay()를 진행할 수 있다.
- 2023.03.28 - [⭐ Unreal Engine/UE FPS TPS] - [UE] 재장전(탄창 생성 및 제거)
2. SpawnActor를 사용하되 bDeferConstruciton = true 설정을 하여 스폰 지연시키기
- 아래 내용 참고.
SpawnActor를 사용하되 bDeferConstruciton = true 설정을 하여 스폰 지연시키기
FActorSpawnParameters 내에 bDeferConstruciton을 true로 설정해준다.
FActorSpawnParameters 을 인자로 SpawnActor로 액터를 스폰시킨다. 이 때는 아직 스폰이 끝나지 않은 상태다.
스폰을 끝내기 원하는 시점에 FinishSpawning을 불러 스폰을 끝내준다.
아래의 코드는 GameModeBase 클래스에 구현된 SpawnPlayerConstroller 함수다. 아래에서 위에서 설명한 방법이 사용되었다.
virtual APlayerController* SpawnPlayerController(ENetRole InRemoteRole, const FString& Options)
{
FActorSpawnParameters SpawnInfo;
SpawnInfo.Instigator = GetInstigator();
SpawnInfo.bDeferConstruction = true; // 이걸 true로 설정!
// we never want to save player controllers into a map
SpawnInfo.ObjectFlags |= RF_Transient;
APlayerController* NewPC = GetWorld()->SpawnActor<APlayerController>(PlayerControllerClass, FVector::ZeroVector, FRotator::ZeroRotator, SpawnInfo);
if (NewPC)
{
if (InRemoteRole == ROLE_SimulatedProxy)
{
// this is a local player because it has no authority/autonomous remote role
NewPC->SetAsLocalPlayerController();
}
NewPC->FinishSpawning(FTransform(FVector::ZeroVector, FRotator::ZeroRotator), false, nullptr, ESpawnActorScaleMethod::MultiplyWithRoot); // 스폰 끝내기!
}
return NewPC;
}
'⭐ Unreal Engine > UE Debugging Log' 카테고리의 다른 글
[UE] TSoftObjectPtr, TSoftClassPtr의 Valid 체크 (IsNull 사용) (0) | 2025.01.14 |
---|---|
[UE] TObjectPtr을 SoftObjectPath로 만들기 (0) | 2025.01.13 |
[UE] Build.cs에서 빠진게 있어 빌드가 안 되는 경우 (0) | 2024.10.08 |
[UE] Shipping 모드에서 디버깅하기 (0) | 2024.10.02 |
[UE] Unreal Insights 엔진 코드에서 생성하기 (0) | 2024.10.01 |
댓글
이 글 공유하기
다른 글
-
[UE] TSoftObjectPtr, TSoftClassPtr의 Valid 체크 (IsNull 사용)
[UE] TSoftObjectPtr, TSoftClassPtr의 Valid 체크 (IsNull 사용)
2025.01.14 -
[UE] TObjectPtr을 SoftObjectPath로 만들기
[UE] TObjectPtr을 SoftObjectPath로 만들기
2025.01.13 -
[UE] Build.cs에서 빠진게 있어 빌드가 안 되는 경우
[UE] Build.cs에서 빠진게 있어 빌드가 안 되는 경우
2024.10.08 -
[UE] Shipping 모드에서 디버깅하기
[UE] Shipping 모드에서 디버깅하기
2024.10.02