How-To: Per-Map Loading Screen Widget

Goal: swap which widget your loading screen shows per map or game mode, with the choice surviving the level transition that destroys whoever made it.

This is a bridge, not a loading screen
UCrimsonLoadingScreenSubsystem only stores a TSubclassOf<UUserWidget> and broadcasts when it changes - it renders nothing. Your loading-screen host (the CrimsonLoadingScreen plugin, or your own) reads it. It lives on the game instance, which is exactly why the value survives OpenLevel.

1. Set the widget class before traveling

Screenshot pendingImages/CrimsonUI/howto-loadingscreen-bp.png
Get CrimsonLoadingScreenSubsystem (context: Game Instance) -> Set Loading Screen Content Widget (New Widget Class = WBP_MissionLoading) -> Open Level.
Verify
GetLoadingScreenContentWidget (BlueprintPure) returns your class after the transition; hosts bound to OnLoadingScreenWidgetChanged were notified at set time.

2. Consume it in a host

If you build your own host: bind OnLoadingScreenWidgetChanged (BlueprintAssignable) or poll GetLoadingScreenContentWidget() when your loading screen opens, create that widget, and slot it into your loading layout. The CrimsonLoadingScreen plugin's full async loading screen (tips, backgrounds, character preview) is the ready-made consumer.

See also

  • CrimsonLoadingScreen wiki - the full loading-screen system.
  • How-To: Get the Building Blocks - subsystem getter chains.