A reusable, config-driven UI management system for Unity. Provides screen lifecycle management, popup handling with priority queues, transition animations, and an editor tool for scaffolding new screens/popups.
- Screen Management — Show/hide screens with transition animations, history stack, and back navigation
- Popup System — Priority-based popup queue with blocker panel
- Config-Driven — Per-screen behavior (HUD visibility, input mode, history exclusion) configured via
UISystemConfigScriptableObject - Transition Overrides — Define custom transitions between specific screen pairs
- String-Backed IDs —
ScreenId/PopupIdstructs wrap strings; game project generates enums via editor tool - Input Abstraction —
IUIInputHandlerinterface decouples from InputSystem - Editor Tool —
Tools > UI System > UI Creatorscaffolds screen/popup classes and auto-updates enum files
- Create a
UISystemConfigasset:Create > UI > UI System Config - Create transition assets:
Create > UI > Screen Transition - Add
UIManagerMonoBehaviour to a scene object and assign the config - Implement
IUIInputHandlerin your game project - Call
UIManager.Instance.Initialize(yourInputHandler)at startup
Implement IUIInputHandler for your input system and create a setup script that:
- Initializes the input handler
- Calls
UIManager.Instance.Initialize(inputHandler) - Sets
UIManager.Instance.OnCancelPressedfor game-specific cancel routing