How-To: Play a Custom Widget Animation (Optional)

Goal: play a per-style UWidgetAnimation - a punch-in for crits, a gentle rise for heals - on top of the style's curve-authored motion. Each style names an animation in AnimationName; the widget decides what to do with it.

Curves already cover most of this
You usually do not need this. Scale punch, fade and travel are already authored in the motion preset's curves. Reach for a widget animation when you want something curves cannot express - a material flash, a shake, a color cycle.

1. Handle On Combat Text Applied

The subsystem calls ApplyCombatText when a pooled widget is assigned to a new instance, which fires the On Combat Text Applied event with the text, the resolved style key, and the style's AnimationName. Switch on the name and play the matching animation.

Widget Blueprint -> On Combat Text Applied -> Switch on Animation Name -> Play Animation.
Do not set TickFrequency to Never
Widget animations work because the widget class is marked DisableNativeTick rather than having its tick frequency set to Never. If you author your own widget base, do not set TickFrequency = Never - that stops animations and latent actions entirely.

2. Do not animate position, scale or opacity

The subsystem writes a single render transform and opacity onto the widget every frame from the motion curves. An animation that also drives those will fight it and lose. Keep widget animations to things motion does not own: materials, child widgets, color.

Change movement in the motion preset
If you want different movement, edit the motion preset in the motion set - see How-To: Author Motion Presets. That is the supported way to change how text travels.

See also

  • How-To: Author Motion Presets - curve-authored movement, the usual answer
  • Concept: Style Resolution, Motion & Rendering - how a style becomes pixels