Deferring a spawned actor, allows you to delay the actual spawning of the object and thus the BeginPlay will be deferred on this actor. This would allow you to make a change after construction but before BeginPlay occurs.
// Called to get an instance to the constructed actor
AMyClass* ActorName =GetWorld()->SpawnActorDeferred(UClass, ActorTransform, Owner, Instigator, ESpawnActorCollisionHandlingMethod::AlwaysSpawn); // Do some stuff ... // Needs to be called to actually finish and have BeginPlay start on the given Actor UGameplayStatics::FinishSpawningActor(ActorName, ActorTransform);
There is a large variety of dialog and sound you can spawn and play.
If you want to do a fire and forget sound, you should use the PlaySound functions instead of the spawn ones.