This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

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


Button

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.

ComponentPurpose
GS_ButtonComponentEnhanced button. Plays UiAnimationMotion assets on hover, unhover, and select events.

Button API


UI Input

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 / TypePurpose
GS_UIInputInterceptorComponentIntercepts configured input events and re-broadcasts them on UIInputNotificationBus.
GS_UIInputProfileData 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.

GS_ButtonComponent in the O3DE Inspector

 

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

PropertyTypeDescription
Hover MotionUiAnimationMotionThe animation played when this button receives hover focus.
Unhover MotionUiAnimationMotionThe animation played when this button loses hover focus.
Select MotionUiAnimationMotionThe animation played when this button is pressed.

Usage

Setup

  1. Add a LyShine UiButtonComponent (or other interactable) to your entity.
  2. Add GS_ButtonComponent to the same entity.
  3. Author .uiam assets for the hover, unhover, and select states using the UiAnimationMotion system.
  4. 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.

A GS_ButtonComponent configured with a UiAnimationMotion proxy for animation target remapping


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.

UI Input Profile asset in the O3DE Asset Editor

 

Contents


How It Works

Input Interception

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.


GS_UIInputProfile

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

PropertyTypeDescription
Input ProfileGS_UIInputProfileDefines which input events to intercept and how to route them for UI handling.

Usage

Setup

  1. Add GS_UIInputInterceptorComponent to the same entity as your root GS_UIPageComponent.
  2. Configure the GS_UIInputProfile to specify which input channels should be intercepted when this canvas is focused.
  3. 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.