GS_UI

The complete UI framework — single-tier page navigation, motion-based animations, enhanced buttons, input interception, load screens, and pause menus.

GS_UI is the gem that builds the game’s interface layer on top of O3DE’s LyShine system. It replaces the old multi-tier Hub/Window/Page hierarchy with a clean single-tier model: the UI Manager owns canvases, and each canvas root is a Page that can parent any depth of nested child Pages. Navigation is fully recursive — any page can push, pop, or swap focus within its subtree. Animations are authored as .uiam data assets using eight LyShine-specific motion tracks (position, scale, rotation, alpha, color, text). Buttons, input interception, load screens, and pause menus round out the feature set.

For usage guides and setup examples, see The Basics: GS_UI.

 

Contents


UI Manager

The singleton that owns all loaded canvases. The UI Manager loads and unloads canvases by name, maintains a global focus stack across canvases, and drives the startup focus sequence deterministically.

ComponentPurpose
GS_UIManagerComponentSingleton manager. Loads canvases, maintains global focus stack, drives startup focus.

UI Manager API


The core navigation system. A single GS_UIPageComponent replaces the old Hub, Window, and Page roles. When m_isRoot is true, the page registers itself with the UI Manager as a root canvas entry point. Pages can parent other pages to form any navigation depth. Focus is managed through push/pop stacks at each level.

ComponentPurpose
GS_UIPageComponentCore navigation component. Handles root canvas registration, child page management, focus push/pop, and show/hide transitions.

Pages API


UI Interaction

The button and input interception layer. GS_ButtonComponent plays motion-based animations on hover and select. GS_UIInputInterceptorComponent captures input events while a canvas is focused, preventing them from reaching gameplay systems.

ComponentPurpose
GS_ButtonComponentEnhanced button. Plays UiAnimationMotion assets on hover, unhover, and select events.
GS_UIInputInterceptorComponentIntercepts configured input events and re-broadcasts on UIInputNotificationBus.

UI Interaction API


UI Animation

A GS_Motion extension with eight LyShine-specific animation tracks. Animations are authored as .uiam assets in the editor and referenced by page transition fields or played directly by the standalone motion component.

TypePurpose
UiAnimationMotionComponentStandalone component for playing a UiAnimationMotion asset on any entity.
UiAnimationMotionAssetData asset (.uiam) that holds a list of UiMotionTracks and playback settings.
UiPositionTrackAnimates LyShine element position offset.
UiScaleTrackAnimates LyShine element scale.
UiRotationTrackAnimates LyShine element rotation.
UiElementAlphaTrackAnimates element-level alpha.
UiImageAlphaTrackAnimates UiImageComponent image alpha.
UiImageColorTrackAnimates UiImageComponent color tint.
UiTextColorTrackAnimates UiTextComponent text color.
UiTextSizeTrackAnimates UiTextComponent font size.

UI Animation API


Widgets

Standalone UI components for game-event-driven scenarios outside the page navigation model — load screens during transitions, pause menus overlaying gameplay.

ComponentPurpose
GS_LoadScreenComponentManages loading screen display during stage transitions.
PauseMenuComponentManages pause state and pause menu overlay.

Widgets API


Installation

GS_UI requires GS_Core, LyShine, and LmbrCentral.

  1. Enable GS_UI in Project Manager or project.json.
  2. Add GS_UIManagerComponent to the Game Manager entity and register it in the Startup Managers list.
  3. Create a LyShine canvas and add GS_UIPageComponent (with m_isRoot = true) to the root element.
  4. Set m_uiName on the root page to match the name you will use when calling LoadGSUI.
  5. Nest child pages under the root by adding GS_UIPageComponent to child entities and connecting them through m_defaultChildPage.
  6. Refer to the UI Set Up Guide for a full walkthrough.

See Also

For conceptual overviews and usage guides:

For related resources:


Get GS_UI

GS_UI — Explore this gem on the product page and add it to your project.