CrimsonUI · Lesson 8 of 9

Push Screens with Input Routing

Beginner5 minRuntimeInput

Before you start

  • Completed: Push Your HUD
Video coming soon

Chapters

1. Subclass CrimsonActivatableWidget

Every screen is a Blueprint parented on `CrimsonActivatableWidget`. Its class defaults declare how input behaves while the screen is on top:

Input ConfigMeaning
DefaultDon't change input — inherit whatever is active
Game And MenuBoth game and UI receive input
GameGame input only
MenuUI input only — the usual choice for menus

Alongside it: Game/Menu Mouse Capture Mode, plus bIgnoreMoveInput / bIgnoreLookInput to freeze the pawn while a menu is up. Set them once on the widget — pushing and popping applies them automatically.

Activatable widget class defaults: Input Config, mouse capture, move/look ignore.

2. Push and pop

Push exactly like the HUD — Push Content To Layer For Player onto UI.Layer.Menu (the async node has Before/After Push pins). Close the screen from inside with Deactivate Widget; the stack pops it and input routing reverts to whatever is beneath.

Async push to UI.Layer.Menu; Deactivate Widget closes it.

C++ pushes synchronously via UCrimsonUIExtensions::PushContentToLayer_ForPlayer(LocalPlayer, LayerTag, WidgetClass); remove with PopContentFromLayer or FindAndRemoveWidgetFromLayer.

Escape menu for free
CrimsonHUDLayout has an Escape Menu Class + escape input action — set them and the HUD opens your pause menu on UI.Layer.Menu without any graph code.