Widget + State
What you build
You create a Widget Blueprint derived from:
UEDInteractionWidget
The widget contains:
InteractionState(FEDInteractionWidgetState) as a regular BlueprintReadWrite structInteractableComponent(optional) for direct access to the focused actor component
FEDInteractionWidgetState
The state struct is intended to be the single source of truth for what the UI should display.
Common fields:
- UI text:
Title,Description,FocusTag - Method:
InteractionMethod - Hold progress:
InteractionPercent - HitPoints:
CurrentHealth,MaxHealth - Cooldown:
CooldownTotal,CooldownRemaining,CooldownPercent - Co-op:
MinPlayersRequired,MaxPlayersAllowed,CurrentInteractors,MultiplayerSpeedMultiplier - Extra:
InteractDuration,ButtonMashingCountNeeded - Deny:
bIsInteractionDenied
How the state is written
UEDPlayerInteractionComponent owns the flow and updates the widget through “master” methods (BlueprintNativeEvent):
UpdateUIInteractionInfoMaster(EEDInteractionMethod, const FEDWidgetInfo&)UpdateHitPointsMaster(float CurrentHitPoints, float MaxHitPoints, bool bUpdate)UpdateCooldownInfoMaster(float CooldownRemaining, float CooldownTotal, float CooldownPercent)SetInteractionPercentMaster(float Percent)UpdateMultiplayerInfoMaster(int32 MinPlayersRequired, int32 MaxPlayersAllowed, int32 CurrentInteractors, float SpeedMultiplier)UpdateIsInteractionDeniedMaster(bool bIsDenied)
Those native implementations update InteractionState directly.
How you update visuals in Blueprints
You can choose one of two patterns:
A) Bind widgets to InteractionState
- Bind Text widgets to
InteractionState.Title/Description/FocusTag - Bind ProgressBars to
InteractionState.InteractionPercent/CooldownPercent
This is the simplest to set up.
B) Override the master methods (event-driven UI)
Implement (override) the master functions in your Widget Blueprint and update your widget visuals there.
Typical mapping:
UpdateUIInteractionInfoMaster: Title/Description/FocusTag widgetsUpdateHitPointsMaster: HP bar and HP textUpdateCooldownInfoMaster: cooldown visualsSetInteractionPercentMaster: hold interaction progress
Widget lifecycle events
These Blueprint events are useful for animations and transient feedback:
PlayShowAnimationMaster()PlayDenyAnimation()OnInteractionWidgetShown()OnInteractionWidgetHidden()OnInteractionDenied(...)OnInteractionCompleted(...)OnInteractAfterDurationStarted(...)OnInteractAfterDurationStopped(...)