Skip to content

Releases: CoderGamester/Unity-UiService

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

Release 0.8.0

29 Oct 23:56
085e117

Choose a tag to compare

What's Changed

  • Added new PresenterDelayerBase, AnimationDelayer and TimeDelayer to support presenters that open/close with a delay
  • Added new DelayUiPresenter to interact with PresenterDelayerBase implementations and allow presenters to open/close with a delay
  • Improved performance of UiService

*Changed:

  • Removed AnimatedUiPresenter. Use the new DelayUiPresenter with one of the PresenterDelayerBase implementations
  • Removed UiCloseActivePresenter and UiCloseActivePresenterData. Use the new DelayUiPresenter with one of the PresenterDelayerBase implementations
  • Removed the dependency of UiPresenter from Canvas. Allowing different structures of UI Unity project hierarchy to work with the UiService
  • Removed all Get and Has methods from IUiService. Replaced with IReadOnlyDictionaries for all the collections being requested from the service
  • Changed all OpenUi methods to be async. This guarantees the expected behaviour that will always load the Ui first before opening
  • Changed all CloseUi methods to be synchronous. Closing an Ui will now always be atomic. To get the close delay, you can request directly from the DelayUiPresenter
  • Changed IUiAssetLoader to unify the prefab instantiation into a single call. This simplefies the method so the caller doesn't have to worry about synchronous or async behaviour
  • Changed the UiConfig to know contain the information of the UiPresenter if is loaded sync or async

Full Changelog: 0.7.2...0.8.0

Release 0.7.2

09 May 18:07
5cdab27

Choose a tag to compare

Fixed:

  • Fixed the issue where closing UiPresenter would be called after the game object is disabled