Loading Screen Not Showing During Level Transition (UE5.3)

Hi everyone,

I’m having trouble displaying a loading screen when transitioning between levels in Unreal Engine 5.3. I’ve set up a simple loading screen using a UMG widget, and I’m trying to show it while a new level is loading using OpenLevel or LoadStreamLevel. The problem is:

  • The widget only shows after the new level has already loaded, or sometimes not at all.

  • It seems like the screen freezes while the new level loads, and the UI doesn’t have time to update or render properly.

Here’s what I’m doing:

  1. Create and add the loading screen widget to the viewport.

  2. Call OpenLevel (or sometimes UGameplayStatics::LoadStreamLevel).

  3. Remove the widget after loading is complete.

I’ve tried:

  • Using FlushRenderingCommands() and ForceGarbageCollection() before loading.

  • Using Async Loading Screen plugin from the Marketplace (but still having inconsistencies).

  • Delaying the level load using timers, but it still feels hacky and unreliable.

  • Checking if the level streaming method is better, but I still want a hard level transition.

Has anyone successfully implemented a reliable loading screen in UE5? Is there a best practice to force the widget to render before Unreal starts loading the level? Or maybe a better approach using level streaming with a persistent level?

Any help or tips would be appreciated!

Thanks in advance.

HI @LuongBangQuang2

To implement a simple loading screen, you can do it this way:

Create a Loading Screen

Then create a menu with a button that starts the transition

In the OnClicked event of that button:

  • Use Remove All Widgets to clear the current UI
  • Create your Loading Screen widget and add it to the viewport
  • Add a short Delay
  • Once the delay finishes, call Open Level with the name of the map you want to load

With this logic, the player will see your loading screen on screen before the level transition starts.

If you’d like to implement it in another way, feel free to ask!

Hope it helps!

the only way to do a loading screen is async in c++, in the free project “ActionRPG” u have one u can use or search from some “Async loading screen” in Fab if u dont want to use c++