Release Notes



  • Doozy Dashboard

  • UITag system

  • UITooltip system

  • UIPopup system



  • UIBehaviour and UIBehaviour.Event shortcuts to all UISelectables

  • TriggerValueChanged parameter for all relevant methods in UIToggle and UIToggleGroup

  • A secondary stream (streamIgnoreDisabled) to the BackButton class, that sends 'Back' button signals even if the functionality is disabled

  • A cooldown option for the UIButton and UIToggle components, to prevent the button/toggle from being clicked multiple times in a short period of time



  • GraphicRaycaster is no longer a required component for UIContainer components



  • Progressor database icon



  • FlowPort GetValue from Json calling with a null valueType

  • BaseUISelectableAnimator possible null reference for the controller's OnSelectionStateChangedCallback

  • CategoruNameIdUtils not adding the default category name 'None' and default name 'None' when calling RefreshCategories and RefreshNames

  • Several editors not unregistering from Unity's Undo system



  • Fixed EnabledIndicator not resetting its position to relative on Reset

  • Various editor fixes across all fluid components



  • Custom Start Value (color) to all Color Animations

  • Display dialogues for all database Refresh buttons to inform the user what the operation does



  • UINode canGoBack property to public



  • TickService to stop generating GC (thanks OscarLeif)



  • SingletonBehaviour from setting the applicationIsQuitting flag to TRUE OnDestroy

  • ColorAnimationTab not updating the animation.startColor as expected

  • All Color animator editors from overriding the startColor after it has been changed by the developer in the Editor

  • SpriteAnimationDrawer using FloatField instead of IntegerField for frame offset and custom frame values

  • Progressor null references when resetting to start values after the target object has been deleted

  • Sprite Reaction not working when using From and To custom frame

  • Progressor allowing circular reference for ProgressorTargets (does not allow targeting itself anymore)

  • UIAnimator null reference if the object is being deleted while the animation is running

  • UIToggle not sending a signal when its value is changed by a UIToggleGroup (via the UpdateValueFromGroup method) (thanks Konstantin)

  • UIToggleGroup triggering twice ValueChanged whenever isOn changes



  • Fixed FluidRangeSlider not calling onStartValueChange when capturing the pointer

  • FluidTab not resetting its indicator as expected


New Tools

  • UI Designer - Rotate

  • UI Designer - Scale

  • UI Designer - Size



  • ColorAnimatorEditor not finding its color target



  • Added FluidRangeSlider component

  • Fixed FluidToggleButtonTab not rounding its corners accoring to the set position


New System

  • UI Designer


New Tools

  • UI Designer - Align (and distribute)



  • Wait for Scene to Load option for the Load Scene Node



  • FlowGraph history from registering the same node twice in a row and create mini back flow loops

  • SceneDiector missing validation checks when unloading scenes (now it checks if the scene is loaded before attempting to unload it)

  • TimeScale Node not working as expected



  • UIMenuCamera handling option for ReactorControllers

  • Categories rename button for in all CategoryNameDatabases



  • UIContainerUIAnimator and UISelectableUIAnimator animation tabs to show move, rotate, scale and fade enabled indicators



  • BaseUISelectableAnimator from triggering double animations in certain use-cases

  • UIMenuItemButton not resetting its preview every time the pointer leaves its bounds

  • FluidWindows duplicating their content when entering PlayMode (in some cases Unity calls CreateGUI without reason)

  • Progressor from printing a debug log about its reaction's heartbeat

  • BaseUIContainerEditor missing null check for onStartBehaviourEnumField

  • UIContainer and UISelectable animator’s editors from resetting to start values without any animations being triggered beforehand

  • ReactionSettingsDrawer giving null references in the editor for the PlayMode and Ease enums

  • CategoryNameGroupWindowLayout not displaying the 'Empty Database' placeholder as expected



  • Fixed FluidTab, UIAnimationTab and ColorTab not resetting their size when recycled


New Components

  • SceneLoader

  • SceneDirector

  • FloatAnimator

  • IntAnimator

  • Vector2Animator

  • Vector3Animator

  • UIContainerFloatAnimator

  • UIContainerIntAnimator

  • UIContainerVector2Animator

  • UIContainerVector3Animator

  • UISelectableFloatAnimator

  • UISelectableIntAnimator

  • UISelectableVector2Animator

  • UISelectableVector3Animator


New Nodes

  • LoadSceneNode

  • UnloadSceneNode

  • ActivateLoadedScenesNode



  • GameObject context menu for most relevant components

  • Open graph in Nody to the Flow Controller component

  • API buttons to all components and nodes

  • Progressor Id database system. You can now find and use Progressors by category/name ids



  • Nody Create Node window to allow dropping folders directy into the runtime and editor paths text fields, to get a path

  • Nody window regeneration when entering and exiting PlayMode

  • Nody window handling of flow graphs by a significant margin

  • RoamingDatabase Validate method by replacing AssetDatabase.SaveAssets with AssetDatabase.SaveAssetIfDirty

  • Improved memory allocations for FlowGraph and FlowController

  • Editors for animators to allow triggering the animations in the editor (outside play mode)



  • ModyEvents from having and Enabled option. They are now always enabled

  • MenuItem structure

  • AddComponentMenu structure

  • All components that derived from UISelectableComponent<T> and to derive from UISelectable directly



  • NewNodeEditor template to use EditorSpriteSheets and added a few extra instructions

  • NewNodeView template with a few extra instructions on how to set custom colors



  • Custom editors missing right side spacing in the Inspector

  • UpdateBot having its Update option true by default and triggering a Global Refresh without reason (new default value is now false)

  • Navigation visualization not showing in edit mode

  • Category Name IDs error when category and name are set to 'None'

  • UISelectable not adding the BackButton to the scene when Domain Reload is disabled



  • Every usage of the FluidAnimatedContainer has been checked and fixed to avoid duplicating elements

  • Fixed FluidAnimatedContainer from sometimes displaying its contents for 1 frame before Show

  • Changed FluidAnimatedContainer animation 'feel'



  • Shortcut methods to UIBehaviours for all UISelectable components

  • A 'triggerCallbacks' parameter to all relevant UIContainer's methods to allow triggering of visibility changes without triggering callbacks



  • Nody Create New Node templates from using EditorMicroAnimations to EditorSpriteSheets

  • FlowController Stop method by also calling OnExit on the active node and then setting it to null

  • RectTransfrom extensions to work as chained methods

  • UIContainer handling of connected Progressors to better address various use-cases

  • UIMenuCamera multishot behaviour for UIContainer targets



  • Sprite sheet textures loading times by stripping raw data when creating the virtual textures used in the editor



  • UIMenuCamera giving an error if the new Input System is not enabled

  • UIBehaviours not automatically connecting newly added behaviours

  • ModyEvent missing initialization for the UnityEvent

  • UIContainer triggering visibility changes without it changing

  • UIContainer Show/Hide being executed with 2 frame delays by the Coroutiner

  • Triggers from adding a Canvas and a GraphicRaycaster component when they are not needed



  • UIMenuItemEditor updated to handle animated preview null references

  • Added new sprite sheet icons to the UIMenu



  • Empty state for UIMenuWindow



  • Most side menus to be resizable

  • Side menu to save/load custom width and collapsed state to/from EditorPrefs



  • PathUtils using UnityEditor

  • FluidWindows from drawing themselves twice when Entering Play Mode and the window is not focused


New Components

  • UIMenuCamera (for editor use only) - helper class for the UIMenu - creates snapshots and animations for UIMenuItem preview

  • Coroutiner - specialized class used to fire Coroutines on a singleton instance



  • A new system to handle sprite sheets

  • A silent implementations for Sprite animators to auto-reference sprite sheets when using the drag and drop (you can drag and drop a sliced texture and it will reference all the sliced sprites)

  • New properties to the UIContainer - 'totalDurationForShow' and 'totalDurationForHide' to get the maximum duration for Show and Hide animations.

  • Animation Duration setting for UIMenuItem

  • UIMenuItemButton OnPointerLeave trigger to reset the preview animation

  • A 'Collapse All' button to the UIMenu window

  • A scale slider to the UIMenu window for all the menu items

  • A 'New Category' text label to all database windows for a better UX

  • Progressor Targets to the Progressor component; this allows a Progressor to update the progress of other (target) Progressors when activated

  • Show, Hide and Show/Hide Progressors options for every UIContainer



  • UIContainer disable gameobject delay from 1 to 3 frames

  • UIContainer RunBehaviour to have 2 frames delay when calling Show (this fixes issues when the container is inside a LayoutGroup, as it allows for the horizontal and vertical to get calculated)

  • All animated graphics inside EditorUI from a micro-animation to a sprite sheet

  • Various changes to adapt to the new sprite sheet system

  • UIMenu Item Button design to adapt to the new scale slider

  • Moved RectTransformExtensions from 'Doozy.Runtime.UIElements.Extensions' to 'Doozy.Runtime.Common.Extensions'

  • UIMenu Window to have a better workflow and UX

  • All native prefabs to a unified design schema



  • Quick links inside the readme text file

  • Example 01 and Example 02 to work with sprite sheets

  • Various editor code structure and functionality to improve performance and UX

  • Various runtime code descriptions to improve UX and to better explain functionalities of fields, properties, methods, and classes



  • DomainReloadHandler from running if PlayModeOptions are not enabled

  • UIBehaviourHandler calling ForceRebuildLayoutImmediate from OnValidate

  • UIContainer initialization and Show/Hide sequencing

  • Progressor Play not resetting the reaction to the start value (depending on the play direction)

  • Database windows from giving null reference exceptions when used as tabs and switching to and from Play Mode


Due to the new ways UI animators work under layout groups, some behaviours might have changed. If you're using layout groups and have UI animators attached to their children, check to see if the new behaviour does not break your animations.



  • UIToggleGroup option to override and control the interactable state for all the connected UIToggles

  • An extension method for MoveDirection - Reverse - that returns the opposite direction

  • LateUpdate for UISelectableUIAnimator, UIContainerUIAnimator and UIAnimator to get position changes while in a layout group

  • FlowGraph OnStart and OnStop unity events



  • UISelectable OnEnable initialization order

  • The way UISelectableUIAnimator, UIContainerUIAnimator and UIAnimator work when in a layout group

  • Default values for Reactor EditorFPS and RuntimeFPS to 120

  • FlowGraph initialized get property from private to public



  • Example 01 to work with the new animators settings and at any aspect ratio

  • Tab Layouts prefabs

  • Horizontal and Vertical layouts prefabs



  • UINode Time Delay not working when set to zero

  • UIContainer execution order inside IsHiding and IsShowing coroutines

  • UIBehaviourHandler OnRectTransformDimensionsChanged initialization

  • ReactorUtils checking for a rootCanvas without cause

  • UIContainer timing for Show and Hide

  • UIContainer from calling InstantShow after a Show

  • UIContainer from calling InstantHide after a Hide

  • UIAnimationPreset data folder path



  • Fluid Animated Contaienr now also updates its container instead of only recalculating its values

  • Fixed SimpleModyActionDrawer animated container not clearing when hidden

  • Fixed FloatModyActionDrawer animated container not clearing when hidden

  • Added a name to the animated container for a ModyActinsDrawerItem



  • Example 07 - Progressor Control



  • Progressor eased progress



  • Progressor PlayToProgress and PlayToValue functionalities to play in a more visual appealing way



  • FlowGraph memory footprint by converting LINQ to code, in all update methods, to reduce GC allocations



  • ProgressorEditor null reference

  • UIContainer disabling the GameObject too early

  • BaseTargetComponentAnimator from updating its settings on enable

  • BaseUISelectableAnimator not doing a null check for a controller on ConnectToController and DisconnectFromController


To fix a typo, the preprocessor directive that activated the old input system was renamed from 'LEGACY_INPUT_MANGER' to 'LEGACY_INPUT_MANAGER'.
If you're using the old input system please check the define symbols in your project to have the correct variant.


New Components

  • UIBehaviourHandler



  • SetStartColor methods for UISelectableColorAnimator

  • SetStartColor, SetStartColorForShow and SetStartColorForHide methods for UIContainerColorAnimator



  • The way a FlowController starts a flow, by increasing the start delay. The flow starts at the end of the second frame instead at the beginning of it.

  • UIContainer InstantToggle and Toggle functionalities. They no longer use a bool parameter and toggle (instant) show/hide according to the visibility state.



  • Load times for DomainReloadHandler

  • Update Bot to regenerate missing asmdef files



  • Attached UI animators from getting disconnected OnDisable

  • FlowController having Awake, Start, OnEnable and OnDisabled methods triggered when the application is not playing

  • FlowController trying to stop a FlowGraph that has not been initialized

  • UINode and PortalNode not performing null checks when stopping their listeners

  • A typo in the preprocessor directive responsible for the activation of the old input system, from 'LEGACY_INPUT_MANGER' to 'LEGACY_INPUT_MANAGER'

  • InputToSignal calling the wrong method ('GetKeyDown' instead of 'GetButtonDown') when using a virtual button for the old input system

  • UIRadialLayout not updating the UI animators attached to its children when the layout values changed

  • UI animators not updating the start position when inside a layout group

  • SpriteAnimator target finder and initialization

  • ColorAnimator target finer and initalization

  • ProgressorEditor usage of deprecated ListView code (for Unity 2021 version and up)

  • Various settings in the example scenes


New Components

  • UISubmitTrigger



  • An UpdateBot to handle database and settings regeneration after an update

  • A function to the UpdateBot to add the define symbol used to activate the new input system by default

  • UIManager Input Setting 'Submit triggers Pointer Click' option that makes ISubmitHandler to trigger Pointer Click events (default: true)

  • Global Refresh button under Tools/Doozy



  • About window not displaying the proper version number

  • ApplidationQuitNode 'Application' does not exist in the current context issue when building

  • VisualElementExtensions 'Debugger' does not exist in the current context issue when building

  • Missing preprocessor directives (define symbols) used to switch between different input solutions



  • Canvas and graphicRaycaster properties from UIAnimator, UIContainerUIAnimator and UISelectableUIAnimator



New Components

  • Progressor

  • Animator Progress Target

  • AudioMixer Progress Target

  • Image Progress Target

  • Text Progress Target

  • TextMeshPro Progress Target

  • UnityEvent Progress Target

  • Signal To AudioSource

  • Signal to Color Target

  • Signal to Sprite Target

  • UIContainer Audio

  • UIContainer Sprite Swapper

  • UISelectable Audio

  • UISelectable Sprite Swapper



  • InputStream management for custom input actions (thanks to Jirdus)

  • SetFlowGraph method to the FlowController

  • License files for Inter and Ubuntu fonts

  • A 'clear log' button for the Signals Console

  • Compatibility with Play Mode Options

  • InputHandling options allowing the system to work with the Input System Package (new Input System) or the Legacy Input Manager (old Input System) or a Custom Input (any 3rd party input solution)

  • Clear Selected and Auto select GameObject after Show options for containers

  • Deselect after Press for all UISelectable components

  • Instant Toggle ON and Instant Toggle OFF callbacks for UIToggle and UIToggleGroup

  • Example 4 (Toggles) and 5 (Progressors)



  • OnClickCallback from UIToggle and UIToggleGroup

  • Canvas and GraphicRaycaster as required components for UIAnimator, UIContainerUIAnimator, UISelectableUIAnimator



  • The execution order in both both IsShowing and IsHiding IEnumerators when updating the visibilityState.

  • Signals Console and Stream Console row layout. Signal Name switched places with Signal Category.



  • Editor load times for Nody flow graph, Category Name windows, Reactor Window, UIMenu Window



  • UIToggle and UIToggleGroup code to work on a wider base of use-case scenarios

  • All relevant animators to have their start position updated with a 2 frame delay, to allow the LayoutGroup to set a new start position



  • Warning in Bezier class for a switch expression that does not handle all possible values of its input type

  • Window MenuItem attributes and priorities (requires Unity restart)

  • Signal not resetting its payload value when pooled or reset

  • UIMenu not generating the correct menu path for the context menu and added a regenerate UIMenu button to the UIMenuWindow. After install, open the UIMenu, click regenerate and then restart Unity. The restart is needed for Unity to refresh its context menu.

  • UISelectable executing twice OnClick callbacks and ignoring the active and interactable states

  • UIButton not seding the click signal

  • UISelectable behaviours connection race condition

  • SignalProviders that are added at runtime to persist to edit mode

  • Missing units in uss files

  • UIMenuUtils to handle menu items without a RectTransform

  • Signal Payload sending a message instead of a value when a string value type is sent

  • InputToSignal not connecting to the proper InputAction



  • All prefabs by removing unnecessary Canvas and GraphicRaycaster components

  • All toggles with instant toggle ON and OFF callbacks

  • Elements in the example scences


Signals methods that use category/name pairs had their signatures changed to the (streamCategory, streamName,...) pattern.
This was done to align all methods that use a category/name pair to have the same signature pattern (easier to remember and work with).



  • Flow Controller to the component menu



  • Unused dependincies

  • SubsystemRegistration for Application.quitting from SingletonBehaviour



  • UIContainer UI Animator Editor override on StartPosition when entering PlayMode

  • UISelectable UI Animator Editor override on StartPosition when entering PlayMode

  • Nody new node creation not setting the proper node editor type

  • Unassigned local variable for guid generation in SignalsStream

  • Signals not generating enums for the StreamId database

  • SignalsStream getting a stream with inverted category and name values

  • Automation generators new line removal to be platform agnostic

  • CategoryNameDatabase refresh after removing a category

  • UINode not registering multiple signal exit conditions

  • Compatibility issues with Unity 2021.2 due to obsolete methods

  • SignalStream InvalidOperationException when a race condition happens