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