Showcase app

A complete mobile game UI, included

The repository's host project is a small mobile-game shell built only from framework features: an intro, four tabs under a shared TopBar and NavBar, and three popups. Clone it, press Play, and read the code.

Run it

  1. Clone dawaniyah-games/UiFramework and open it in Unity 6.
  2. Open Assets/Scenes/Bootstrapper.unity, set the Game view to portrait 1080 × 1920, and press Play.
  3. Open Window → UI Framework → UI Setup Manager → Elements, change a screen's animation, and play again.

States in the app

StateElement scenesHow it is shown
IntroUiStateIntroUiElementFirst, by the bootstrapper. Its loading ends by entering Home
MainMenuUiState, StoreUiState, LeaderboardUiState, ProfileUiStatescreen + TopBarUiElement + NavBarUiElementNon-additive; the bars are shared and never re-animate
SettingsUiState, RewardUiState, ConfirmPurchaseUiStateone popup scene eachAdditive over the current tab, closed with HideUI

Patterns worth copying

One navigator

ShowcaseNavigator is the only caller of ShowState / HideUI. It queues calls so they never overlap, keeps only the last tab tapped, and allows one popup at a time.

Context everywhere

Tab states get a TabUiParams; the shared NavBar reads the tab from the same object, so it is right however the tab was reached.

Shared re-population

The TopBar wires itself once and refreshes on every Populate. When the Store is already on screen, a second Populate switches its page in place.

Popups that look right

The popup's Fade preset fades the dimmed backdrop; only the panel moves, through a RevealOnShow, so the backdrop never slides.

Inspector choreography

RevealOnShow, StaggeredReveal, FillBar and CountUpText play when the element shows; LoopMotion, ShimmerSweep, ConfettiBurst and CoinFlyLayer add life.

One camera, one EventSystem

The bootstrapper keeps them in a DontDestroyOnLoad root, and UiCanvasCamera assigns the camera to every Screen Space – Camera canvas as its scene loads.

See it in motion