GS_UI
Categories:
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.
| Component | Purpose |
|---|---|
| GS_UIManagerComponent | Singleton manager. Loads canvases, maintains global focus stack, drives startup focus. |
Page Navigation
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.
| Component | Purpose |
|---|---|
| GS_UIPageComponent | Core navigation component. Handles root canvas registration, child page management, focus push/pop, and show/hide transitions. |
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.
| Component | Purpose |
|---|---|
| GS_ButtonComponent | Enhanced button. Plays UiAnimationMotion assets on hover, unhover, and select events. |
| GS_UIInputInterceptorComponent | Intercepts configured input events and re-broadcasts on UIInputNotificationBus. |
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.
| Type | Purpose |
|---|---|
| UiAnimationMotionComponent | Standalone component for playing a UiAnimationMotion asset on any entity. |
| UiAnimationMotionAsset | Data asset (.uiam) that holds a list of UiMotionTracks and playback settings. |
| UiPositionTrack | Animates LyShine element position offset. |
| UiScaleTrack | Animates LyShine element scale. |
| UiRotationTrack | Animates LyShine element rotation. |
| UiElementAlphaTrack | Animates element-level alpha. |
| UiImageAlphaTrack | Animates UiImageComponent image alpha. |
| UiImageColorTrack | Animates UiImageComponent color tint. |
| UiTextColorTrack | Animates UiTextComponent text color. |
| UiTextSizeTrack | Animates UiTextComponent font size. |
Widgets
Standalone UI components for game-event-driven scenarios outside the page navigation model — load screens during transitions, pause menus overlaying gameplay.
| Component | Purpose |
|---|---|
| GS_LoadScreenComponent | Manages loading screen display during stage transitions. |
| PauseMenuComponent | Manages pause state and pause menu overlay. |
Installation
GS_UI requires GS_Core, LyShine, and LmbrCentral.
- Enable GS_UI in Project Manager or
project.json. - Add GS_UIManagerComponent to the Game Manager entity and register it in the Startup Managers list.
- Create a LyShine canvas and add GS_UIPageComponent (with
m_isRoot = true) to the root element. - Set
m_uiNameon the root page to match the name you will use when callingLoadGSUI. - Nest child pages under the root by adding GS_UIPageComponent to child entities and connecting them through
m_defaultChildPage. - 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.