인프런 커뮤니티 질문&답변

BlurryFace님의 프로필 이미지
BlurryFace

작성한 질문수

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

10강 게임데이터 관리

SpawnActorDeferred 관련

작성

·

349

0

void AABStageGimmick::SpawnRewardBoxes()
{
	for (const auto& RewardBoxLocation : RewardBoxLocations)
	{
		FTransform SpawnTransform(GetActorLocation() + RewardBoxLocation.Value + FVector(0.0f, 0.0f, 30.0f));
		AABItemBox* RewardBoxActor = GetWorld()->SpawnActorDeferred<AABItemBox>(RewardBoxClass, SpawnTransform);
		if (RewardBoxActor)
		{
			RewardBoxActor->Tags.Add(RewardBoxLocation.Key);
			RewardBoxActor->GetTrigger()->OnComponentBeginOverlap.AddDynamic(this, &AABStageGimmick::OnRewardTriggerBeginOverlap);
			RewardBoxes.Add(RewardBoxActor);
		}
	}

	for (const auto& RewardBox : RewardBoxes)
	{
		if (RewardBox.IsValid())
		{
			RewardBox.Get()->FinishSpawning(RewardBox.Get()->GetActorTransform());
		}
	}
}

위 코드에서 SpawnActorDeferred 와FinishSpawning을 같은 for문 블록에서 처리하지 않고 따로 처리하신 이유가 궁금합니다.

답변 1

0

이득우님의 프로필 이미지
이득우
지식공유자

액터의 스폰 준비 상태와 완료 상태를 명시적으로 구분하기 위해 일부로 분리했던 것으로 기억하네요.
차후 준비 과정에서 기능을 추가할 경우를 대비하기 위함으로 보셔도 될 것 같습니다.

BlurryFace님의 프로필 이미지
BlurryFace

작성한 질문수

질문하기