Article on creating loading screens

https://unrealist.org/engine-startup-preload-screens/

See also

Prevent screen from closing

If you want to prevent the user from clicking out of a loading screen after the loading itself has completed, the loading screen movie player requires there to actually be at least one movie, and it needs to be looping

You need to manually call MoviePlayer->StopMovie() in such a case to close the load screen.

If you don’t have any movie clips, there is no way to prevent it from closing on user input. You can create a custom loading screen via some Slate hacking but it’s complicated.

Waiting for actors during loading

It seems the best way to let actors keep the loading screen up is to use gamemode, gamestate or some other shared method to synchronize. You need to be able to check as soon as the level loads whether the actors are doing loading, and if you have multiple which may spawn later in time, it may be problematic.

GameMode for example is available and the actors can communicate to it. It can then communicate for example to a subsystem which manages the loading state.