Skip to content

Releases: CoderGamester/Unity-UiService

Release 1.2.0

07 Jan 19:02
496a8f6

Choose a tag to compare

What's Changed

New:

  • Added UiPresenterManagerWindow unified editor tool for managing UI presenters in play mode.

Changed:

  • BREAKING: Removed IUiAnalytics, UiAnalytics, NullAnalytics, and all related analytics types.
  • Removed legacy UiAnalyticsWindow and UiServiceHierarchyWindow editor tools.

Full Changelog: 1.1.0...1.2.0

Release 1.1.0

06 Jan 09:54
109e036

Choose a tag to compare

What's Changed

New:

  • Added OpenUiSetAsync(int setId, CancellationToken) method to IUiService for opening all UI presenters in a set with proper address handling, ensuring compatibility with CloseAllUiSet and UnloadUiSet
  • Added OnOpenTransitionCompleted() and OnCloseTransitionCompleted() lifecycle hooks to UiPresenter for reacting after all transition animations/delays complete
  • Added comprehensive test suite:
    • Unit tests for UiAnalytics, UiConfig, UiInstanceId, UiServiceCore, UiSetConfig
    • PlayMode integration tests for multi-instance, loading, open/close, and UI set management
    • Performance and smoke tests
    • Feature-specific tests for AnimationDelayFeature, TimeDelayFeature, and PresenterFeatureBase
  • Added ITransitionFeature interface for features that provide open/close transition delays
  • Added OpenTransitionTask and CloseTransitionTask public properties on UiPresenter for awaiting transition completion externally
  • Added AGENTS.md documentation for AI coding agents
  • Added structured documentation under docs/ folder with separate pages for getting started, core concepts, API reference, advanced topics, and troubleshooting
  • Added multiple new samples to the package library
  • Added multiple IUiAssetLoader implementations to support different asset loading scenarios:
    • AddressablesUiAssetLoader (default): Integration with Unity Addressables.
    • PrefabRegistryUiAssetLoader: Simple loader for direct prefab references (useful for testing and samples).
    • ResourcesUiAssetLoader: Support for loading from Unity's Resources folder.
  • Added AddressablesUiConfigs, ResourcesUiConfigs, PrefabRegistryUiConfigs, ResourcesUiConfigsEditor, AddressablesUiConfigsEditor and PrefabRegistryUiConfigsEditor for managing UI configurations.

Changed:

  • BREAKING: Made UiConfigs class abstract to enforce usage of specialized subclasses (AddressablesUiConfigs, ResourcesUiConfigs, PrefabRegistryUiConfigs) and prevent runtime errors from misconfiguration
  • BREAKING: Removed IPresenterFeature interface; features now extend PresenterFeatureBase directly
  • BREAKING: Renamed UiAssetLoader to AddressablesUiAssetLoader to reflect its specific loading mechanism.
  • BREAKING: Renamed UiConfig.AddressableAddress to UiConfig.Address for loader-agnosticism
  • Changed UiPresenter<T>.Data property to have a public setter that automatically triggers OnSetData() when assigned
  • Refactored TimeDelayFeature and AnimationDelayFeature to no longer call gameObject.SetActive(false) directly; visibility is now controlled solely by UiPresenter
  • Refactored UiPresenter.InternalOpen() and InternalClose() to use internal async processes that await ITransitionFeature tasks
  • Refactored AnimationDelayFeature and TimeDelayFeature to use Presenter.NotifyOpenTransitionCompleted() and Presenter.NotifyCloseTransitionCompleted() instead of internal events
  • Removed OnOpenCompletedEvent and OnCloseCompletedEvent internal events from delay features
  • Updated all samples to use UI buttons instead of input system dependencies for better project compatibility

Fixed:

  • Fixed AnimationDelayFeature animation playback logic - was incorrectly checking !_introAnimationClip instead of _introAnimationClip != null
  • Fixed UiPresenterEditor play-mode buttons to properly call InternalOpen() and InternalClose() instead of just toggling gameObject.SetActive()
  • Fixed delay features to work correctly when tests run together (UniTaskCompletionSource lifecycle)
  • Fixed null checks in delay features using explicit null comparisons instead of null-conditional operators for Unity object compatibility
  • Fixed inconsistent lifecycle where OnOpenTransitionCompleted/OnCloseTransitionCompleted were only called when features existed
  • Fixed split responsibility for visibility control where both UiPresenter and features could call SetActive(false), allowing now to properly close the presenters in all scenarios
  • Fixed LoadUiAsync visibility state inconsistency where calling it on an already-visible presenter with openAfter=false would disable the GameObject but not update VisiblePresenters, causing subsequent OpenUiAsync calls to fail silently
  • Fixed multi-instance ambiguity when calling Close(destroy: true) from within a presenter and now correctly unloads the specific instance instead of potentially unloading the wrong one
  • Fixed UI Toolkit timing issue where element queries in OnInitialized() would fail because the visual tree was not yet attached to a panel

Full Changelog: 1.0.0...1.1.0

Release 1.0.0

03 Nov 22:58
7a173a9

Choose a tag to compare

What's Changed

New:

  • Added IUiAnalytics interface and UiAnalytics implementation for performance tracking
  • Added three editor windows: UiAnalyticsWindow, UiServiceHierarchyWindow
  • Added new "UI Layer Hierarchy Visualizer" section to the UiConfigsEditor inspector
  • Added UiPresenterSceneGizmos for visual debugging in Scene view
  • Added UiPresenterEditor custom inspector with quick open/close buttons
  • Added multi-instance support for UI presenters via UiInstanceId struct and instance addresses
  • Added UiInstance struct to encapsulate presenter metadata (type, address, presenter reference)
  • Added feature-based presenter composition architecture with IPresenterFeature interface
  • Added PresenterFeatureBase base class for composable presenter features
  • Added AnimationDelayFeature and TimeDelayFeature components for delayed UI operations
  • Added UiToolkitPresenterFeature for UI Toolkit integration
  • Added DefaultUiConfigsEditor for out-of-the-box UI configuration (no custom implementation required)

Changed:

  • Replaced Task.Delay with UniTask.Delay throughout for better performance and WebGL compatibility
  • Updated CloseAllUi to avoid modifying collection during iteration
  • Enhanced UiService.Dispose() with proper cleanup of all presenters, layers, and asset loader
  • LoadUiAsync, OpenUiAsync methods now accept optional CancellationToken parameter
  • Updated the README with a complete information of the project
  • Replaced LoadedPresenters property with GetLoadedPresenters() method for better encapsulation
  • Migrated all delay functionality from PresenterDelayerBase to feature-based system (AnimationDelayFeature, TimeDelayFeature)
  • Converted all editor scripts to use UI Toolkit for better performance and modern UI
  • Refactored UiConfigsEditor to use UI Toolkit with improved visuals and drag-and-drop support
  • Optimized collection types (Dictionary, List) for better performance in UiService
  • Removed loading spinner from UiService (simplified initialization)

Fixed:

  • CRITICAL: Fixed GetOrLoadUiAsync returning null when loading new UI (now properly assigns return value)
  • Fixed exception handling in UnloadUi with proper TryGetValue checks
  • Fixed exception handling in RemoveUiSet with proper TryGetValue checks
  • Fixed redundant operations in CloseAllUi logic
  • Fixed initial value handling for UI sets in editor
  • Fixed serialization updates before property binding in editor
  • Fixed script indentation issues in delay presenter implementations

Full Changelog: 0.13.1...1.0.0

Release 0.13.1

28 Sep 19:47
0585f78

Choose a tag to compare

What's Changed

New:

  • Added UiToolkitPresenter script to allow UI Toolkit based UIs to work similar to UiPresenter

Changed:

  • Refactored UiToolkitPresenter to also pass the root visual element to it's implemented class and properly assign the element OnValidate

Full Changelog: 0.13.0...0.13.1

Release 0.13.0

25 Sep 16:30
6a8628d

Choose a tag to compare

What's Changed

New:

  • Added UiToolkitPresenter script to allow UI Toolkit based UIs to work with the library

Changed:

  • Updated README to reflect the project structure
  • Adjusted the Editor tools and UiService to process UI Toolkit based views

Full Changelog: 0.12.0...0.13.0

Release 0.12.0

08 Jan 18:11
97e607d

Choose a tag to compare

What's Changed

New:

  • Added InteractableTextView script to allow linking text code execution, e.g open URLs in the broser

Changed:

  • Renamed AdjustScreenSizeFitter to AdjustScreenSizeFitterView to mark it as a View in the architecture conventions
  • Moved AdjustScreenSizeFitterView and NonDrawingView, SafeAreaHelperView to the Views folder and namespace to organize the codebase accordingly

Full Changelog: 0.11.0...0.12.0

0.11.0

05 Jan 21:49
ca6f9a3

Choose a tag to compare

What's Changed

New:

  • Added two new static event calls to UiService that are triggered when the app changes resolution and another trigger when changes screen orientation
  • The new UiServiceMonoComponent was added to the project for internal purposes, in order to support Unity's loop or generic GameObjects dependency code (e.g. the screen resolution trigger change)
  • Added new AdjustScreenSizeFitter to extend the ui behaviour of Unity's ContentSizeFitter in order to allow the LayoutElement to fit between the LayoutElement.minSize & LayoutElement.flexibleSize, values defined in the Unity's inspector

Changed:

  • Renamed UiPresenterData to UiPresenter to make it less verbose

Full Changelog: 0.10.0...0.11.0

Release 0.10.0

13 Nov 22:46
cc8cccd

Choose a tag to compare

What's Changed

New:

  • Added UniTask dependency to enable WebGL platform support

Changed:

  • Updated IUiService async methods to use UniTask instead of Task for better performance and WebGL compatibility

Full Changelog: 0.9.1...0.10.0

Release 0.9.1

04 Nov 01:21
433b499

Choose a tag to compare

What's Changed

Fixed:

  • Fixed the issue that would crash NonDrawingView if the GameObject would be missing a CanvasRenderer

Full Changelog: 0.9.0...0.9.1

0.9.0

01 Nov 02:23
2bab5ef

Choose a tag to compare

What's Changed

  • Added GetUi method to the IUiService. It requests the UiPresenter by directly using generic T
  • Added IsVisible method to the IUiService. It requests the visibility state of UiPresenter
  • Added IReadOnlyList property VisiblePresenters to the IUiService to allow external entities to access the list of visible UiPresenter

*Changed:

  • Removed GetAllVisibleUi() method. Use IsVisible method instead

Full Changelog: 0.8.0...0.9.0