How to Make a PreLoading Screen?

I’ve already made a regular loading screen that goes on between loading levels, but, when I start up the game in standalone mode there is a black screen for several seconds while it initially launches the game. How can I make a preloading screen so that black screen doesn’t exist (or at least not as long). My thought process was to use the init override function when making a new game instance blueprint, but I can’t figure out how to get my UI Loading screen I created to show.

Anyone have an idea how to go about this in blueprints?

1 Like

You could make your initial level, the one that gets loaded when the game starts in standalone, just an empty level, which should load instantly, that also instantly displays the “preloading” ui on BeginPlay and starts loading the “real” main menu/game scene.
Once the main menu/game scene loaded, remove the preloading ui widget.

I’m also curious about this

This might be too late for an answer but the engine actually has this built-in. You have to use C++ though.

You need to create a class inheriting from FPreLoadScreenBase. You can choose the stage of initialization and provide a slate widget that will be used as a loading screen.

class FStartupLoadScreen : public FPreLoadScreenBase
{

public:

	// PRE-LOADSCREEN BASE //////////////////////////////////////////

	virtual void Init() override;
	virtual void RenderTick(float InDeltaTime) override;

	virtual EPreLoadScreenTypes GetPreLoadScreenType() const override
	{
		return EPreLoadScreenTypes::EarlyStartupScreen;
	}

	virtual TSharedPtr<SWidget> GetWidget() override
	{
		return myLoadingScreenWidget;
	}

	// ~ PRE-LOADSCREEN BASE ////////////////////////////////////////

private:

	TSharedPtr<SWidget> myLoadingScreenWidget = nullptr;

};

Here is an excellent summary: Engine Startup Preload Screens | Matt’s Game Dev Notebook