Level streaming: FlushLevelStreaming() causes BeginPlay() not to be called

What it says on the tin. First of all, bShouldBlockOnLoad is broken, which forces me to flush the level streaming system before I proceed. Band-aids on band-aids.

But the real issue is that my actors are not getting BeginPlay() called. I noticed this because nothing was initting or ticking. When I finally allowed the parent blueprint of one actor in question to tick before BeginPlay was called, it worked. In other words, BeginPlay is simply not getting called.

This is 100% an issue with level streaming. BeginPlay() and Tick() are absolutely called when the level is run standalone as opposed to streamed in. If I stream the level in without flushing, it also gets called. Unreal 5.1.

I found other issues in the same vein from some years back, which claim to be fixed.

2 Likes

This issue is still present for me as well on 5.1.1

Enabling world partition in a level causes BeginPlay to not be called for an BP actor. Placing the same actor in a non-streamed level works fine. Currently I must disable “IsSpatiallyLoaded” in order to receive BeginPlay, which is untenable long term.