UI Interaction
Button animations and input interception — motion-driven hover/select states and input channel management for focused UI canvases.
UI Interaction covers the two systems that handle player input at the UI layer: the enhanced button component that plays motion-based animations on hover and select, and the input interceptor that captures and routes input events while a canvas is focused.
For usage guides and setup examples, see The Basics: GS_UI.
Contents
An enhanced button component that extends LyShine interactable behavior with motion-driven hover and select state animations. Attach alongside a UiButtonComponent and assign .uiam assets for hover, unhover, and select states.
| Component | Purpose |
|---|
| GS_ButtonComponent | Enhanced button. Plays UiAnimationMotion assets on hover, unhover, and select events. |
Button API
An input interceptor component that captures and redirects input events for UI-specific handling, preventing input from propagating to gameplay systems while a UI canvas is focused.
| Component / Type | Purpose |
|---|
| GS_UIInputInterceptorComponent | Intercepts configured input events and re-broadcasts them on UIInputNotificationBus. |
| GS_UIInputProfile | Data asset defining which input channels to intercept and how to route them. |
UI Input API
See Also
For component references:
- Page Navigation – Pages use the same UiAnimationMotion system for show/hide transitions
- UI Animation – The motion asset system used by buttons and pages
- UI Manager – Controls which canvas is focused, activating the input interceptor
For conceptual overviews and usage guides:
Get GS_UI
GS_UI — Explore this gem on the product page and add it to your project.
1 - Buttons
Enhanced button component with motion-driven hover and select animations, built on top of LyShine interactable notifications.
GS_ButtonComponent is an enhanced button that extends O3DE’s LyShine interactable system with UiAnimationMotion support. Instead of relying on LyShine’s built-in state sprites or color transitions, GS_ButtonComponent plays data-driven motion assets for hover, unhover, and select states, giving you full control over animated button feedback using the same animation system that drives page transitions.
The component attaches to any entity that already has a LyShine interactable (e.g. UiButtonComponent). It listens for LyShine interactable notifications and triggers the appropriate motion asset when the interactable state changes.
For usage guides and setup examples, see The Basics: GS_UI.

Contents
How It Works
LyShine Integration
GS_ButtonComponent connects to O3DE’s UiInteractableNotificationBus on the same entity. When LyShine fires hover, unhover, or press events, the component intercepts them and plays the corresponding UiAnimationMotion asset. This means you author your button animations as .uiam assets in the same workflow as page transitions and other UI animations.
The component does not replace LyShine’s interactable – it works alongside it. The LyShine UiButtonComponent still handles click detection, navigation, and accessibility. GS_ButtonComponent adds the visual animation layer on top.
Motion States
Each button can have up to three motion assets assigned:
- Hover Motion – Played when the interactable receives hover focus (mouse enter or gamepad navigation highlight).
- Unhover Motion – Played when the interactable loses hover focus.
- Select Motion – Played when the interactable is pressed/selected.
Each of these is a UiAnimationMotion struct that references a .uiam asset. The motion can animate any combination of the eight UI track types (position, scale, rotation, alpha, color, text size) to create rich button feedback.
Inspector Properties
| Property | Type | Description |
|---|
| Hover Motion | UiAnimationMotion | The animation played when this button receives hover focus. |
| Unhover Motion | UiAnimationMotion | The animation played when this button loses hover focus. |
| Select Motion | UiAnimationMotion | The animation played when this button is pressed. |
Usage
Setup
- Add a LyShine
UiButtonComponent (or other interactable) to your entity. - Add
GS_ButtonComponent to the same entity. - Author
.uiam assets for the hover, unhover, and select states using the UiAnimationMotion system. - Assign the
.uiam assets to the corresponding fields in the Inspector.
The button will now play the assigned animations automatically when the user interacts with it. No ScriptCanvas or C++ code is required for the animation behavior.

See Also
For component references:
- UI Animation – The motion asset system that drives button animations
- Page Navigation – Pages use the same UiAnimationMotion system for show/hide transitions
- UI Input – Input interception used alongside buttons in interactive canvases
For conceptual overviews and usage guides:
Get GS_UI
GS_UI — Explore this gem on the product page and add it to your project.
2 - UI Input
Input interception for UI canvases – captures and redirects input events to prevent gameplay propagation while a UI is focused.
GS_UIInputInterceptorComponent intercepts input events when a UI canvas is active, preventing them from propagating to gameplay systems. This solves the common problem of button presses or navigation inputs leaking through to the game world while a menu is open.
The component uses a GS_UIInputProfile to define which input events to intercept and how to route them. When the associated UI canvas is focused, the interceptor captures configured input events and broadcasts them on the UIInputNotificationBus instead of allowing them to reach gameplay input handlers.
For usage guides and setup examples, see The Basics: GS_UI.

Contents
How It Works
When a UI canvas receives focus through the UI Manager, the input interceptor activates. It listens for input events that match its configured GS_UIInputProfile and consumes them before they reach the gameplay input system. The intercepted events are then re-broadcast on the UIInputNotificationBus so that UI-specific logic can respond to them.
When the canvas loses focus, the interceptor deactivates and input flows normally to gameplay systems.
The input profile defines which input channels to intercept and how to map them for UI use. This allows different UI canvases to intercept different sets of inputs – a pause menu might intercept all gameplay inputs, while a HUD overlay might only intercept specific menu navigation inputs.
API Reference
Notification Bus: UIInputNotificationBus
Events broadcast when the interceptor captures input. Multiple handler bus – any number of components can subscribe to receive intercepted input notifications.
Components that need to respond to UI-specific input (such as custom navigation logic or input-driven UI animations) connect to this bus to receive intercepted events while a canvas is focused.
Inspector Properties
| Property | Type | Description |
|---|
| Input Profile | GS_UIInputProfile | Defines which input events to intercept and how to route them for UI handling. |
Usage
Setup
- Add
GS_UIInputInterceptorComponent to the same entity as your root GS_UIPageComponent. - Configure the
GS_UIInputProfile to specify which input channels should be intercepted when this canvas is focused. - Any component that needs to respond to intercepted input connects to
UIInputNotificationBus.
See Also
For component references:
- UI Manager – Controls which canvas is focused and therefore which interceptor is active
- Page Navigation – The page system that drives canvas focus changes
- Button – Button animations used alongside input interception
For conceptual overviews and usage guides:
Get GS_UI
GS_UI — Explore this gem on the product page and add it to your project.