I am suuuper late to this question. But one of the things I did is, in my custom character I check if my dependency actor has already been initialized and if it has not then I initialize it. For example, I want AWorldSet actor to have its BeginPlay executed before APSCCharacter is done with its begin play. So I do this APSCCharacter’s BeginPlay
void APSCCharacter::BeginPlay()
{
Super::BeginPlay();
AActor* worldSet;
// Iterate through UWorld to find the , worldSet
if (!worldSet->HasActorBegunPlay())
{
worldSet->DispatchBeginPlay();
}
// Do dependent logic here.
}
Note this only calls BeginPlay for world set once. So you don’t have to worry about being play being called twice. Once this execution is complete world set’s HasActorBegunPlay() will return true preventing further execution of BeginPlay in the same frame.
Hope that helped!