Quick answer: Add a WidgetInteractionComponent to your player pawn. Without it, the engine has no mechanism to send input events to world-space Widget Components. Set the Interaction Source to World, ensure Interaction Distance reaches the widget, and call PressPointerKey/ReleasePointerKey to simulate clicks.
Here is how to fix Unreal Widget Component not receiving input. You placed a Widget Component on an actor in the world — an in-game computer screen, a shop menu, a holographic display. The widget renders correctly. You can see the buttons. You click on them and nothing happens. No hover states, no click events, no response at all. The widget is purely visual with no interactivity.
The Symptom
A UWidgetComponent displays a UMG widget in 3D world space. The widget renders correctly — text, buttons, and images all appear. But clicking on the buttons does nothing. Hover effects do not trigger. The cursor does not change when hovering over the widget. In the editor viewport, interaction also fails. The widget behaves as a flat texture with no interactivity.
What Causes This
1. No WidgetInteractionComponent. World-space widgets cannot use the standard HUD input path. They need a UWidgetInteractionComponent attached to the player pawn or camera. This component fires a trace along its forward vector and sends virtual pointer events to whatever widget the trace hits.
2. Interaction Distance too short. The WidgetInteractionComponent has an InteractionDistance property (default 500 units). If the widget is farther away than this distance, the trace does not reach it.
3. Widget facing the wrong direction. Widget Components only accept interaction on their front face. The front face is the component’s local X-forward direction. If the widget faces away from the camera, traces hit the back face and are ignored.
4. Interaction Source misconfigured. The WidgetInteractionComponent’s Interaction Source can be World (trace from component position along its forward vector), Mouse (use screen-space mouse position), or Custom. If set to Mouse in a first-person game without a visible cursor, it sends no traces.
The Fix
Step 1: Add a WidgetInteractionComponent to your pawn.
// In your character header:
UPROPERTY(VisibleAnywhere)
UWidgetInteractionComponent* WidgetInteraction;
// In the constructor:
AMyCharacter::AMyCharacter()
{
WidgetInteraction = CreateDefaultSubobject<UWidgetInteractionComponent>(
TEXT("WidgetInteraction"));
WidgetInteraction->SetupAttachment(GetFirstPersonCameraComponent());
WidgetInteraction->InteractionDistance = 2000.0f;
WidgetInteraction->InteractionSource = EWidgetInteractionSource::World;
}
Step 2: Bind click input to the interaction component.
// In SetupPlayerInputComponent:
void AMyCharacter::SetupPlayerInputComponent(UInputComponent* Input)
{
Super::SetupPlayerInputComponent(Input);
Input->BindAction("Interact", IE_Pressed, this,
&AMyCharacter::OnInteractPressed);
Input->BindAction("Interact", IE_Released, this,
&AMyCharacter::OnInteractReleased);
}
void AMyCharacter::OnInteractPressed()
{
WidgetInteraction->PressPointerKey(EKeys::LeftMouseButton);
}
void AMyCharacter::OnInteractReleased()
{
WidgetInteraction->ReleasePointerKey(EKeys::LeftMouseButton);
}
Step 3: Verify the widget orientation. In the level editor, select the Widget Component. The red arrow (X-axis) should point toward the camera or player position. If it points away, rotate the component 180 degrees on the Z-axis. Alternatively, enable Two Sided in the Widget Component’s rendering settings.
Step 4: Debug the interaction trace.
// Enable debug visualization
WidgetInteraction->bShowDebug = true;
// This draws a red line showing the trace direction and hit point
// If the line does not reach the widget, increase InteractionDistance
// If it hits the back face, rotate the widget component
“World-space widgets are not screen-space widgets. They exist in 3D and need 3D interaction. The WidgetInteractionComponent is the bridge between your player’s actions and the widget’s event system.”
Why This Works
Unreal’s UMG widgets are designed for screen-space interaction by default. The PlayerController sends mouse and keyboard events to the viewport’s Slate widget tree. World-space widgets live outside this tree — they are rendered to a texture and displayed on a 3D surface. The WidgetInteractionComponent bridges this gap by performing a world trace, converting the 3D hit point to 2D widget coordinates, and injecting synthetic pointer events into the widget’s event system. Without it, there is no input pathway from the player to the widget.
Related Issues
If the widget interaction works but the visual cursor does not appear on the widget surface, set bShowDebug to true on the WidgetInteractionComponent and check that the widget’s hit test is visible. The debug line should show exactly where on the widget surface the trace hits.
For Landscape traces that block the widget interaction trace, see Fix: Unreal Landscape Collision Not Working for collision channel configuration that might intercept your widget traces.
No WidgetInteractionComponent, no interaction. Add it to the pawn, bind the click, check the distance.