com.amanotes.kview
v1.2.1
Published
Layer-based UI management system with navigation, page transitions, and view lifecycle for Unity games.
Maintainers
Readme
KView
Package: com.amanotes.kview v1.2.1
Unity: 2022.3+
Namespace: Amanotes.Orchestra
Dependencies: com.amanotes.assetfolder 1.0.3, com.amanotes.extensions 1.0.2, com.cysharp.unitask 2.5.10
Layer-based UI management system with navigation history, page transitions, and view lifecycle for Unity games.
Quick Start
// Navigate to a screen (searches Screen layer first, then all layers)
KView.Goto("HomeScreen");
KView.Goto("GameScreen", gameData);
// Popups
KView.ShowPopup("SettingsPopup");
KView.ShowPopup("ShopPopup", shopData, stack: true);
KView.HidePopup();
// History
KView.Back();
KView.Next();
bool canGoBack = KView.CanGoBack();
// Subscribe to events (no EventBus required)
KView.OnViewShown += e => Debug.Log($"Shown: {e.viewId}");
KView.AddListener(OnStateChanged);
KView.RemoveListener(OnStateChanged);
// Query current view
string currentView = KView.GetMainLayerCurrentViewId();Architecture
KView— singleton controller, static navigation API, static eventsKViewLayer— view container with AssetFolder integration and z-order managementKViewPage— state-machine layer with UnityEvent callbacksKViewBaseView— abstract base for all views, handles transitions and lifecycleKViewNavigator— back/forward history with multi-layer state coordinationKViewAlias— maps a single alias to views across multiple layers
View Implementation
public class HomeScreen : KViewBaseView
{
public override UniTask Setup(KViewDetail detail)
{
await base.Setup(detail);
// one-time setup
return UniTask.CompletedTask;
}
public override void Show(KViewChangeContext context)
{
base.Show(context);
// populate UI with detail.viewData
}
}View Options
KViewBaseView exposes two serialized fields configurable in the Inspector:
destroyOnHide— destroys the view's GameObject after hide completes; recreated from prefab on next show. Use for memory-heavy views that are rarely revisited.persistOnScreenChange— keeps the view alive when the main Screen layer navigates to a different screen. Useful for overlays that should survive screen transitions.
Installing in your project
Add to your Packages/manifest.json:
{
"dependencies": {
"com.amanotes.kview": "1.2.1",
"com.amanotes.assetfolder": "1.0.3",
"com.amanotes.extensions": "1.0.2",
"com.cysharp.unitask": "2.5.10"
},
"scopedRegistries": [
{
"name": "npmjs",
"url": "https://registry.npmjs.org/",
"scopes": [
"com.amanotes"
]
},
{
"name": "OpenUPM",
"url": "https://package.openupm.com",
"scopes": [
"com.cysharp"
]
}
]
}Then open Unity — the Package Manager will resolve and download all packages automatically.
