Release Notes

Version index

VersionDateSummaryBreaking
2.0.02026-07-11The UI-focused Luna — shader UI Effects, node-graph navigation, PanelRenderer view layer, UI Attractor, responsive theming, one bundled Asset Store package⚠️ from 1.x
1.4.0UI Render system, Transition Animation system, ProgressBar events
1.3.7Gap line overlays, tooltip disabled state; CelledProgressBar removed⚠️ Yes
1.3.6Radial progress bar arc configuration (sweep / start angle)
1.3.5Celled progress bar, radial multi-segment; UpdateProgressSegments() removed⚠️ Yes
1.3.4Global UIView registry, LocalizationViewStyleSwitcher
1.3.3Text Effects (12 rich-text effects), VertexReveal
1.3.2Button shade/outline styles, ListViewWrapper
1.3.1PaginationController + KeyValueDatabase editor improvements
1.3.0World-space support (Unity 6.2), shader demos (Unity 6.3), RPGDemo
1.2.3GameFull sample, SpeechBubble tails
1.2.2InputPrompt local multiplayer
1.2.1ProgressBar IndicatorAutoColor; fixes
1.2.0Mobile sample, GridView/Inventory list variants, AspectRatio element⚠️ Yes
1.1.1ProgressBar USS variables; Save/Load UI redesign
1.1.0Tooltip system rework, functional save system⚠️ Yes
1.0.8Notification sfx options; fixes
1.0.7CooldownWipe element
1.0.6Custom Tab component
1.0.5PauseMenuEscapeAction plain class, split fade durations
1.0.4CircleHoleElement, Ink sample
1.0.3ProgressBar overlay feature
1.0.2Add Default Escape Action option
1.0.1Disable Other Views On Fade-In option

[2.0.0]

🚀 The UI-focused Luna. Luna is a pure UI Toolkit framework for Unity 6 — drop it in from the Asset Store, import Essentials, and you have shader-driven UI effects, node-graph navigation, live 3D-in-UI, and a fully themed component library, with every dependency bundled (no scoped registries, no manifest.json edits). Migration is light if you only use Luna for UI.

Requires Unity 6000.5+ (the view layer builds on Unity 6.5's PanelRenderer). Need help? Discord (faster) or email.

Marquee features

  • UI Effects — eight composable shader effects on any VisualElement: Outer (glow / shadow), Outline, Inner shadow, Gradient, Shine, Flash, Pattern (tile), and Dissolve. One uber-shader gated by an _ActiveEffects bitmask — textureless, and zero runtime cost when disabled. See UI Effects.
  • Node-graph navigation — author your UI flow as a graph: NavNode destinations inside NavGraphSO assets, mounted by a scene NavHost, addressed by validated CatalogKey ids. Id-first verbs on the LunaNavigation facade — Push, PushAsync<T> (awaitable, returns Task<PushResult<T>>), Push<TArgs>, ReplaceTop, PopUpTo, ClearStackAndPush, Close, SwitchChannel, PopBackStack — each with a CatalogKey overload, plus multi-host topology merge, a boot-hold queue, synchronous route guards, and a live Graph Runtime Debugger. See the navigation guide.
  • Occlusion policy per destination — a NavNode dropdown decides what happens beneath the top view: Overlay (default), Replace, or Overlay Opaque — a render optimization where views beneath a fully-covering solid screen stop rendering (display:none) once it settles, then are restored the instant it starts hiding. Covered views stay open with bindings live, so the reveal is instant and data-fresh through any stack depth. Stress demo: Showcase/Components/Occlusion/OcclusionDemo.unity. See Occlusion.
  • UI Attractor — pooled "fly-to" reward particles (coins to your wallet, XP to the bar) fired with one LunaUIManager.Instance.Attractor.Burst(...) call: two-stage scatter-then-home motion, pluggable arrival reactions, and per-particle sprite overrides so one burst can carry mixed item icons.
  • Responsive themingResponsiveViewStyleSwitcher applies a breakpoint USS class to every view root from one call, backed by a semantic size-token system across screens, modals, and banners, with safe-area / UI-scaler support and a responsive GridView. See Responsive.
  • Interaction & component juiceInteractionJuiceManipulator gives any element press / release / hover feel from a reusable profile asset, and components grew UXML-wired juice slots: ProgressBar fill / drain / filled / pulse-below transitions plus an Indicator Mode (damage-ghost drains, clean-tween heals), TabView tab-pop and content-in, CooldownWipe ready-flash and cooling pulse, and Tooltip show / hide TransitionSequenceAssets with a positioning overhaul (measured before the show effect plays — no more mid-animation drift). RestoreOnEnd cleanup makes every effect interrupt-safe. See Interaction Juice.
  • Palette Generator tool — color-palette builder with WCAG contrast, hue distribution, and CSS / SCSS / Tailwind / JSON / USS export. Try it.

View layer & components

  • PanelRenderer-based views (Unity 6.5). UIViewComponent drives a PanelRenderer (auto-fetched from the same GameObject when unset). The tree is delivered asynchronously — query elements in OnUILoaded(root) (or gate with WhenUILoaded / the UILoaded event / IsUILoaded), never in Awake / Start.
  • PanelRendererBinder — a lightweight base for components that bind to a PanelRenderer tree without being a full view (HUD binders, tooltip hosts), with OnPanelReady / OnPanelEnable / OnPanelDisable / OnPanelReload hooks. TooltipController extends it. See UIViewComponent → PanelRendererBinder.
  • TabView — one headless tab element. Author plain <ui:Button> children; TabView manages .tab-bar__item / .tab-bar__item--active, fires OnTabChanged(string), and acts per its Mode: Channels (routes to LunaNavigation.SwitchChannel), Panels (display-toggles local .tab-panel siblings), Events (event only), or Auto. Gamepad LB/RB cycling built in.
  • Awaitable popupsConfirmation Popup (ChoicePopupController, N buttons) and Input Popup (InputPopupController, single-line text with a Validate predicate gating Confirm): register one prefab as a nav destination, push it from anywhere with per-call args, and await the outcome — PushAsync<int> resolves the clicked choice, PushAsync<string> the confirmed text; Esc / backdrop resolve as dismissed.
  • ProgressBar value scale — declare a bar's MaxValue once and drive it in absolute units (PlayTo(hp), SnapTo(hp), absolute current/target accessors), with RescaleMaxValue re-proportioning in place for max-HP-increase moments; linear and radial bars share one IProgressBarElement API, so every extension works on both.
  • GridView delegate bindersDelegateGridViewList<T> / DelegateGridViewPagination<T> bind a grid with makeItem / bindItem / unbindItem delegates (UI Toolkit's ListView idiom — no subclass), plus explicit column control via SetFixedItemPerLine.
  • ElementSelector — element queries and transition targets author as a single CSS-selector string parsed by Luna's ElementQuery.
  • Label.PlayCountTo(from, to, durationMs, format) — rolling-number animation for HUD counters, the numeric counterpart of ProgressBar.PlayTo().
  • LunaTicker — one global UITK tick drives every animated element (UI Effects, transitions, progress bars, text reveal + text effects), replacing per-element schedulers and removing the recurring GC spike they caused.

Distribution & samples

  • One package, drop in and go. The Asset Store ships com.cupkekgames.luna with input, the foundation primitives, and data + graphs (which power catalog-keyed nav) bundled as dependencies. No scoped registry, no chained installs.
  • Three samplesEssentials (the reusable starter kit: theme, UXML, sprites, audio, prefabs), Showcase (the LunaShowcase flagship shell + LunaStorybook component browser + Components scenes), and GameFull (a finished-looking F2P game shell, including a full inventory / equipment screen and a drop-table loot loop wired to UIAttractor).
  • Editor tooling — the Tools > CupkekGames > LunaUI Panel (the single-page intro screen: one-click Essentials and Showcase imports, an "Extra: GameFull" card with a live package count, health alerts only when something is broken) auto-opens on first install and on sample import; a Package Manager window installs the optional GameFull ecosystem packages in one click; UI Effect Baker + the Luna Effects window snapshot and profile effect stacks.

Refinements

  • Value Comparison utilities generalized: ItemStatChangeTypeValueDeltaType, ItemStatLineValueComparisonLine, ItemStatLineControllerValueComparisonLineController. See Value Comparison.
  • Default font is Nunito (Rubik kept in Font.uss for easy revert); KeyValueDatabaseDrawer replaces the per-type KeyValueDatabaseMonoSOEditor subclasses; modal input-blocking uses pickingMode / focusable instead of SetEnabled(false) (no :disabled styling flash while a modal fades).

Requirements

  • Unity 6000.5+ — the view layer uses Unity 6.5's PanelRenderer and custom-filter pipeline. Older editors are blocked at install with a clear version message rather than confusing compile errors.

Upgrading from Luna 1.x

Luna 2.x is a UI-focused re-architecture. If you used Luna only for UI, migration is light; the big-ticket changes:

  1. Unity 6000.5+ required. Replace UIDocument with PanelRenderer on view GameObjects (Unity's API updater won't do it for you), and move element queries from Awake / Start into OnUILoaded(root).
  2. Navigation is a node graph. Create a NavGraphSO with a NavNode per destination, add a scene NavHost, and remove the old per-view Nav Destination Id wiring — the host mounts the views now. Reference destinations as [CatalogKeyConstraint(NavConstants.NavDestinationCatalogId)] CatalogKey.
  3. Managers consolidated. UIAttractorManager.Instance.XLunaUIManager.Instance.Attractor.X (delete the manager GameObject); page input-blocking renamed to SetInputBlocked* (the bool meaning is inverted). FadeOutThenDestroy / _addDefaultEscapeAction dismissal → LunaNavigation.PopBackStack().
  4. Transitions & selectors. UIViewTransitionEntry targets via an ElementSelector (CSS string) + StepMs — re-author entries that targeted by ElementName, and any ElementSelectors saved in the old structured shape.
  5. Samples restructured. Delete Assets/Samples/LunaUI and re-import Essentials / Showcase / GameFull; rewrite UXML/USS url() paths that pointed at the old Samples~/Library/... or LunaUI/... sample folders.
  6. Value Comparison renames — see Refinements above.

Ecosystem changes (sibling packages)

The wider CupkekGames ecosystem shipped a coordinated v0.2.0 wave alongside Luna 2.0 — foundation split, kind-driven primitives, feature composition, catalog architecture, combat refactor. Only relevant if you use GameFull or pull sibling packages into your project.

Packages Changelog — v0.2.0 wave


[1.4.0]

New Features

UI Render System

Render 3D content (particles, models, VFX) directly onto UI elements using a pooled Camera → RenderTexture pipeline. Supports multiple content modes: prefab instantiation, borrowing scene objects, or observing in-place. Includes PlayOverlay for layering effects on existing UI.

See documentation: UI Render

Transition Animation System

Reusable UI animations via ScriptableObjects or code. Includes TransitionAnimator component, 52 preset animations, and UIView fade event integration.

IMPORTANT: You need to re-import the library sample to get the presets. See documentation: Transition Animation

ProgressBar & RadialProgressBar

  • Time Scale Support: Animations respect Time.timeScale
  • Animation Completion Events: OnSegmentAnimationComplete, OnIndicatorAnimationComplete
  • Multi-Pass Animation: PlayMultiPass() for multiple 0→100% cycles (e.g., XP leveling)

See documentation: Progress Bar | Radial Progress Bar

Other

  • FadeUIElement: Added IsFading, IsFadingIn, IsFadingOut state tracking
  • USS Library: Added size-* utility classes. See Size Utilities

[1.3.7]

⚠️ Breaking Changes

  • Removed CelledProgressBar: The CelledProgressBar component has been removed. Use ProgressBar with gap line overlays instead, which provides equivalent functionality with simpler implementation.

New Features

  • Tooltip: Added a disabled state. When disabled, any active tooltips are closed and new ones are prevented from opening. Usage: TooltipController.Tooltip.SetTooltipEnabled(bool)
  • Drag and Drop: Added AddTooltipReference(Tooltip) to DragAndDropManipulator. Registered tooltips are automatically disabled when a drag starts and re-enabled when the drag ends.
  • FadeableMono: Added FadeableAction enum and lifecycle action fields (OnAwake, OnEnable, OnDisable, OnDestroy). Each field accepts a FadeableAction value: None, FadeIn, FadeOut, SetFadedIn, or SetFadedOut. For example, set OnAwake to SetFadedOut and OnEnable to FadeIn to have a view start hidden and fade in each time it's enabled.
  • USS Library: Added predefined aspect-ratio utility classes (aspect-auto, aspect-square, aspect-video, aspect-1-1, aspect-2-1, aspect-3-2, aspect-4-3, aspect-16-9, etc.).
  • ProgressBar: Gap Line Overlays - Added gap line overlay system with major/minor gap support. Gap lines are VisualElements positioned on top of progress fills, replacing the need for CelledProgressBar in most use cases.
    • gap-line-count: Number of cells (gap lines = count - 1)
    • minor-cells-per-major: Number of minor cells per major segment
    • Minor: minor-gap-line-width, minor-gap-line-color, minor-gap-line-range
    • Major: major-gap-line-width, major-gap-line-color, major-gap-line-range
    • minor-gap-line-min-spacing: Auto-skips minor lines when cells get too narrow
  • ProgressBar: SetGapLineCountWithScaling() - Helper method that scales indicator and segment positions proportionally when gap count changes. Use for dynamic max value scenarios (e.g., health bars where max HP changes).

Updated Demos

  • ProgressBarLeagueOfLegends: New demo that uses ProgressBar with gap line overlays. Demonstrates dynamic gap calculation based on max HP.
  • ProgressBarOverwatch: Updated to use ProgressBar with gap line overlays. Demonstrates multi-segment health/shield/armor with proper scaling when totals change.

Fixes

  • Fixed an incorrect import in SpeechBubblePositionConfig that caused build errors.

[1.3.6]

New Features

Radial Progress Bar: Arc Configuration

  • Sweep Angle: Configure the total arc span (0-360°). Default is 360 (full circle). Set to smaller values like 240° for speedometer-style gauges.
  • Start Angle: Configure where the arc begins. Default is -90° (12 o'clock/top position). Adjust to create different orientations.

All progress segments, indicators, and cells scale proportionally within the configured arc.

New Demo

  • RadialProgressBarSweepAngleDemo: Showcases different arc configurations including full circles, 270° arcs, 240° speedometers, 180° semi-circles, and 90° quarter arcs—with and without cells.

[1.3.5]

⚠️ Breaking Changes

  • Removed UpdateProgressSegments(): Simply set Progress[index].TargetValue directly and call PlayProgress().

New Features

New Component: Celled Progress Bar

Linear progress bar with discrete cell segments for Overwatch-style health bars. Features cell-based rendering, multi-segment support, angled cells, and damage indicators.

See documentation: Celled Progress Bar

Radial Progress Bar: Multi-Segment Support

  • Progress array with CurrentValue, TargetValue, and Color per segment

Documentation

New structure: Linear, Radial, Celled, RPG Demo, Architecture

Fixes

  • Fixed RadialProgressBar and CelledProgressBar not reading progress attribute from UXML

[1.3.4]

New Features

  • Global UIView Registry: UIViews automatically register/unregister to a global registry, enabling system-wide operations on all views.
  • Global USS Class Management: Added AddClassToAllUIViews() and RemoveClassFromAllUIViews() to LunaUIManager. Classes are automatically applied to existing and future UIViews.
  • LocalizationViewStyleSwitcher: New component that applies locale-specific USS classes (e.g., locale-en, locale-ja) to all UIView roots at runtime. Works around Unity's limitation of not being able to change global USS variables at runtime.
  • UIView IDisposable: UIView now implements IDisposable for explicit cleanup.

Samples

  • Localization Demo:
    • Added AutoSizeText example demonstrating how auto-sizing text works with localization. The example shows how text automatically adjusts font size when changing locales, ensuring text remains readable across different languages.
    • LocalizationViewStyleSwitcher example implemented for Japanese locale only—switching to Japanese changes the font using locale-specific USS classes. You can extend this pattern to other locales as needed.

Fixes

  • SceneLoaderAddressable: Fixed Scene Loading Issues in Unity Editor. Scene loading could fail when stopping and restarting play mode in the Unity Editor due to stale Addressables handles. Added error handling and recovery logic in SceneLoaderAddressable. Scenes now load correctly when iterating in play mode. Editor warnings may still appear but are handled automatically.
  • Text Effects: Fixed OneTime animation parsing and behavior. The parser now correctly maps "onetime" to OneTime instead of PingPong. Movement effects now animate forward then return to neutral position and stay there. Refactored duplicate code with shared helper methods.

[1.3.3]

New Feature: Text Effects

https://www.docs.cupkek.games/luna/features/texteffects

Leveraging Unity 6.3's new TextElement.PostProcessTextVertices API to enable rich text animations directly on glyph vertices. This system supports 12 customizable text effects via rich text tags:

  • Motion Effects: Pendulum, Dangle, Bounce, Slide, Swing, Wave
  • Visual Effects: Fade, Rainbow, Rotate, Shake, Wiggle
  • Size Effects: Increase Size

All effects support customizable parameters (speed, amplitude, intensity, etc.) through rich text tag attributes.

Visual Novel Controller: Added new VertexReveal text animation mode for smooth character-by-character reveal using vertex manipulation. TextEffectComponent: New component to easily apply text effects without dialogue controller.

Demos

  • Components/TextEffects: New demo showcasing each text effect
  • Ink/TextEffects: New demo showcasing text effects in visual novel dialogues

Other New Features

  • List and Scroll Views: Added ghost styling with reduced scroller opacity for a more subtle, transparent appearance.
  • Speech Bubble: Added World Space positioning example in Ink Sample scenes.
  • ElementSelector: Serializable element selector

Fixes

  • Settings Menu Input Rebind: Fixed compatibility with updated InputDeviceManager API and improved user experience.

[1.3.2]

New Features

  • Button: Added "shade" style class. Similar to ghost but with a semi-transparent black background that is always visible, not just on hover.
  • Button: Added "outline" style class. Gives the button a border in the color of the button's color class.
  • ListViewWrapper: New utility class that provides keyboard navigation functionality for Unity's ListView component. Prevents individual list items from receiving focus and handles Up/Down/Next/Previous navigation between items, making keyboard navigation feel natural. See documentation: https://www.docs.cupkek.games/luna/utility/listviewwrapper

Fixes

  • Luna.TabView: Fix "No player input found" spamming in editor.
  • SceneLoaderAddressable: Cleanup OnDestroy so you don't get "Attempting to load AssetReference Scene that has already been loaded." error in editor.

[1.3.1]

New Features

  • PaginationController: Made VisualElements public so you can customize further.
  • KeyValueDatabase: Rewrote custom editor drawers to fix visual issues.

Samples

  • Library Editor: Added InventoryItemReferenceDrawer.txt, a sample PropertyDrawer for InventoryItemReference. It displays the int ItemType field as a custom ItemType enum dropdown in the Inspector. Provided as a .txt file to avoid conflicts if you add a custom drawer to your project.

[1.3.0] Major Update

World Space Support for 6.2

  • Tooltip: Position calculation now works correctly in world-space UI. A new demo scene has been added to the Components sample.
  • Drag & Drop: Position calculation now works correctly in world-space UI. A new demo scene has been added to the Components sample.

Shader Demos for Unity 6.3

  • RPGDemo: Added a new RPGDemo to the Components sample. This demo showcases diablo health and mana orb, skill slots with cooldown wipe and tooltip. A showcase video is available on the store page.
  • Shader Effects Demo: Demo scene showcasing shader effects. Shiny visual effect. More effects will be added over time.

New Features

  • ProgressBar: Visuals are now fully customizable. In the new RPGDemo, the progress bar uses shaders entirely instead of visual elements while still taking advantage of features such as indicator.
  • Default Tooltip: Added a new visual element slot named AbsoluteBackground. TooltipContainerSetup has new paramater for absoluteBackground. This is also used in RPGDemo for custom tooltip background.
  • Pie Chart: Calculates the center of each segment, allowing you to position custom elements such as labels. The Pie Chart demo in the Components sample has been updated.
  • UITKCoordinateUtility: new static class that has a bunch of utility functions.

[1.2.3]

New Features

  • New Sample "GameFull": This sample combines GameStandart with Localization and Newtonsoft samples. Adding localization and working save load system.
  • Improved Main Menu in Game Samples.
  • SpeechBubble Tail: Added optional tails that can be positioned on any corner.

New Documentation

Fixes

  • USS Cursor: fix uss cursor styling error.
  • AddressabeAssetManager: Also release the AssetReference's internal operation to prevent "already loaded" errors in DestroyAllThenRelease function.

[1.2.2]

New Features

New Demo Scene

  • New local multiplayer demo added to components sample in InputPrompt folder.

Refactors:

  • LunaUIManager.GetInputAction("Move") is now InputDeviceManager.PlayerInputs[0].actions["Move"];
  • InputDeviceManager.PlayerInput.actions["Move"]; is now ``InputDeviceManager.PlayerInputs[0].actions["Move"];`

Fixes

ProgressBar

  • Refactor: Remove redundant background color variable from ProgressBar color styles so applying a uss class (e.g. primary, red, blue, etc.) doesn't affect the background.

TabView

  • Fix: Tab label binding not working when using Luna.Tab.
  • Added: Rebuild function to use when binding is not enough or possible.

Library Sample

Scene Transitions With Input

  • Refactor: Input actions settings moved to LunaUIManager. Change input action map management strategy from "disable specific maps" to "enable only specified maps, disable all others".

[1.2.1]

New Features

ProgressBar

  • Added bool IndicatorAutoColor attribute. Useful when you don't want indicator color to update automatically, for example when using SetFilling function to show a change.

Fixes

  • Fix: InputIconControlScheme error when new input system is not installed.

Tooltip

  • Fix: Handle null TooltipContainerSetup values.

Samples

GameSaveManager

  • Change access modifiers of _enableAutosave and _autosaveSlots to protected from private.

[1.2.0] (New Mobile Sample, Inventory and GridView)

Warning

If you're using GridView or Inventory, refactor is required. See details below.

New Features

Mobile Sample:mobile_phone:

  • Configured for mobile devices. Responsive design, has features like SafeArea for UI Toolkit. More to come.
  • Includes a new Mobile Equipment scene. Has listview and pagination versions. Pagination version has drag & drop and InventoryWithSlots, which lets you move items between slots.

New Element: Aspect Ratio

  • USS still doesn’t support aspect-ratio or vw/vh units, so I implemented an AspectRatio element. It can take the full width or height of its parent while maintaining a consistent shape — like staying perfectly square.

GridView

  • Responsive: Automatically updates element count when container width changes, enabling responsive layouts.
  • Refactor: GridView has been renamed to GridViewPagination.
  • New: Introduced GridViewList as an alternative to pagination.
  • Added ability to define buttons for clearing filters.
  • Components Sample: Added a standalone example scene.
  • Components Sample: Added a responsive layout example.

Inventory and Equipment:

  • Refactor: Renamed InventoryView to InventoryViewPagination.
  • New: Introduced InventoryViewList as an alternative to pagination.
  • Refactor: Renamed EquipmentView to EquipmentViewPagination.
  • New: Introduced EquipmentViewList as an alternative to pagination.
  • Added a dedicated scenes featuring both InventoryViewPagination and InventoryViewList to Components sample.
  • Refactor: ItemDragAndDrop now requires two InventoryItemSlotController instances. One for the slot that will start the drag, and one for creating the visual element at drag start.

Drag & Drop:

  • Added ability to style drop slots on drag start.
  • Improved target detection on drop.

Fixes

Input Prompts

  • Fixed an issue that prevented builds on platforms where Unity’s Input System strips PlayStation controller classes, such as android.

AddressableAssetManager:

  • Removed redundant locks.
  • Improved internal logic.
  • Added test scripts and a sample scene.

[1.1.1]

New Features

Custom USS Property

If you’d like to see USS variables for other components or properties, let me know!

Samples

  • Save/Load UI: Added filters for auto and manual saves. Complete REDESIGN of UI to support both gamepad and keyboard.
  • Architecture: Replaced Singleton with ServiceLocator. The samples are meant to demonstrate architecture concepts—they're not mandatory patterns. I personally use ServiceLocator, so I’ve updated the samples to reflect that.
  • ASMDEF: Split the Systems assembly definition into smaller modules. If you're using these samples, make sure to update your ASMDEF references accordingly.

Fixes

Samples

  • Autosave: Fixed logic issues. Autosave settings are now stored in metadata.
  • ItemDatabase: Don’t enforce Singleton on ItemDatabase.

[1.1.0] [Major Update]

Warning: It's recommended to remove Luna and samples before updating. This update includes significant refactors to the Tooltip, Save/Load and Inventory systems. If you are using these features, you may need to update your implementation. Feel free to ask for support.

New Features

Tooltip System

  • Added UpdateDisplay function to TooltipManipulator for seamless tooltip updates without closing and reopening.
  • Added Close function to TooltipManipulator, ensuring only the currently active tooltip is closed.
  • Smart Position: If the tooltip is set to appear on top but doesn't fit, it will smartly adjust its position to the bottom, left, or right.
  • Introduced Nested Tooltips, requiring a major code refactor. If this affects your implementation, feel free to ask for support.
  • Tooltip Refactor:
  • DefaultTooltip has been renamed to TooltipController. Since this is a MonoBehaviour, you’ll need to update your GameObject. Select the GameObject that previously contained DefaultTooltip in your scene, remove the missing component, and add TooltipController manually.
  • DefaultTooltipContainerSetup has been renamed to TooltipContainerSetup.
  • DefaultTooltipManipulator has been renamed to TooltipManipulator.
  • Simplifies development by consolidating tooltip logic into a single, more versatile component.
  • Limits fully custom tooltip behavior but is designed to cover all standard needs.
  • Added new Tooltip demos to Components sample, showcasing seamless updates and nesting.

Save/Load System

  • Functional Save System: New sample that showcases a working save system using the Newtonsoft JSON library.
  • Optimized Save Data Loading:
  • Previously, the Save/Load UI loaded all save files in full, which was inefficient for large files.
  • Now, it can load only metadata and fetch full save data only when needed.

Other

  • GridView: Constructor now accepts optional TooltipController.
  • Inventory: Moved from Luna to Library Sample. The inventory system is not strictly a UI component but rather a gameplay feature, making it more appropriate for Library Sample rather than the UI library. It now has it's own assembly file called CupkekGames.InventorySystem.
  • Core.Pool: Added pooling classes that uses unity's pool internally. Used by new Tooltip internally but you can use them for any pooling. Implemented versions are plain classes, GameObjects, MonoBehaviours, ScriptableObjects.

Fixes

  • Game Demo – Save/Load: Fixed an issue where loading a save while already in the game scene caused errors.
  • Addressable Demo: Fixed broken configurations from previous updates.

[1.0.8]

Added:

  • NotificationView: Optional sfx on push and dismiss
  • GridView(Mainly used in inventory, can be used to create custom grid views): Added uss classes to filter buttons, so you can customize their styles Fixes:
  • NotificationView: Fix showing dismissed notifications at initialization
  • ProgressBar: Editor code in runtime assembly causing error on build

[1.0.7]

Added:

  • New Custom Element: CooldownWipe. Useful for showing cooldown of skills or duration of status effects/buffs. Fixes:
  • TabView: Add USS class names to header buttons and their selected states, useful for customizing style.

[1.0.6]

Added:

  • TabView: Added a custom Tab component while keeping the support for built-in Tab component. Custom Tab component is more cumbersome to use but allows you to add custom content to the Tab-Button. Added a red-dot example to the component sample, similar to a notification indicator on a button. Fixes:
  • ProgressBar: Fixed alignment problems when using multiple bars with instant = false.

[1.0.5]

Added:

  • new PauseMenuEscapeAction: Added a plain class version alongside the MonoBehaviour version. Example Usage: In a view like visual novel, you might want to prevent going back before the dialogue finishes. You can do this with InputEscapeManager.SetBlocked(true) but it will block all escape actions. With this new class, you can add the pause menu action to the end of the stack so that the pause menu remains accessible while blocking other back actions.
  • Fadeable: split duration into fadeInDuration and fadeOutDuration. Fixes:
  • ProgressBar: various fixes for changes made in 1.0.3.
  • Added null check for LunaUIManager in UIView for 'Disable Other Views On Fade-In' option. It will fail silently.
  • Added fading to the LoadingUI in CircleSceneTransition for a smoother transition from the black circle to the LoadingUI.
  • Fix compile error when InputSystem package is not installed.

[1.0.4]

New:

  • New Custom Element: CircleHoleElement - I was using shaders and uGui for circle loading transition. CircleHoleElement uses UI Toolkit's Vector API to draw the shape to achieve the same effect.
  • Renamed PopupConfirmation to PopupChoice as it supports multiple choices now.
  • New Sample: Ink - A sample demonstrating how to integrate the Ink narrative scripting language with the VisualNovel component. With support for choices and branching.

[1.0.3]

New:

  • ProgressBar: Added an overlay feature. The API has changed significantly, and the documentation has been updated with new examples. Includes a new Overwatch-style health bar sample!
  • PieChart: Made gap line strokes straight.
  • ProgressBar: Improved performance using the DynamicTransform UsageHint.
  • Notifications: Improved performance using the DynamicTransform UsageHint. Fixes:
  • Samples (Game): Added escape input action to dialogue player UIs.
  • Samples (Game): Improved inventory layout.
  • Samples (Components): Fixed NPEs caused by the new "Disable Other Views On Fade-In" option.

[1.0.2]

New:

  • Added 'Add Default Escape Action' option to UIViewComponent which adds UIViewActionEscape that calls FadeOutAndDestroy. So you don't have to write script for simple escape with input.
  • Samples: Added input support and icons to all three dialogue players Fixes:
  • Sample game, save/load view: Fix issue where the save button is not disabled when you are in the main menu

[1.0.1]

New:

  • Added 'Disable Other Views On Fade-In' option to UIView and UIViewComponent
  • Improved UI Element Manager API Fixes:
  • Game Sample: Fixed credits view
  • Game Sample: Add custom navigation to main menu to be able to target quit button
  • Game Sample: Fixed inventory item filter buttons

Settings

Theme

Light

Contrast

Material

Dark

Dim

Material Dark

System

Sidebar(Light & Contrast only)

Light
Dark

Font Family

DM Sans

Wix

Inclusive Sans

AR One Sans

Direction

LTR
RTL