Releases: CoderGamester/Unity-UiService
Releases · CoderGamester/Unity-UiService
Release 1.0.0
What's Changed
New:
- Added
IUiAnalyticsinterface andUiAnalyticsimplementation for performance tracking - Added three editor windows:
UiAnalyticsWindow,UiServiceHierarchyWindow - Added new "UI Layer Hierarchy Visualizer" section to the
UiConfigsEditorinspector - Added
UiPresenterSceneGizmosfor visual debugging in Scene view - Added
UiPresenterEditorcustom inspector with quick open/close buttons - Added multi-instance support for UI presenters via
UiInstanceIdstruct and instance addresses - Added
UiInstancestruct to encapsulate presenter metadata (type, address, presenter reference) - Added feature-based presenter composition architecture with
IPresenterFeatureinterface - Added
PresenterFeatureBasebase class for composable presenter features - Added
AnimationDelayFeatureandTimeDelayFeaturecomponents for delayed UI operations - Added
UiToolkitPresenterFeaturefor UI Toolkit integration - Added
DefaultUiConfigsEditorfor out-of-the-box UI configuration (no custom implementation required)
Changed:
- Replaced
Task.DelaywithUniTask.Delaythroughout for better performance and WebGL compatibility - Updated
CloseAllUito avoid modifying collection during iteration - Enhanced
UiService.Dispose()with proper cleanup of all presenters, layers, and asset loader LoadUiAsync,OpenUiAsyncmethods now accept optionalCancellationTokenparameter- Updated the README with a complete information of the project
- Replaced
LoadedPresentersproperty withGetLoadedPresenters()method for better encapsulation - Migrated all delay functionality from
PresenterDelayerBaseto feature-based system (AnimationDelayFeature,TimeDelayFeature) - Converted all editor scripts to use UI Toolkit for better performance and modern UI
- Refactored
UiConfigsEditorto use UI Toolkit with improved visuals and drag-and-drop support - Optimized collection types (
Dictionary,List) for better performance inUiService - Removed loading spinner from
UiService(simplified initialization)
Fixed:
- CRITICAL: Fixed
GetOrLoadUiAsyncreturning null when loading new UI (now properly assigns return value) - Fixed exception handling in
UnloadUiwith properTryGetValuechecks - Fixed exception handling in
RemoveUiSetwith properTryGetValuechecks - Fixed redundant operations in
CloseAllUilogic - 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
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
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
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
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
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
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
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
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
Fixed:
- Fixed the issue where closing UiPresenter would be called after the game object is disabled