DoozyUI is a native Unity Editor extension that makes it easy to manage and animate professional User Interfaces – without having to know how to code. Beginner friendly and scalable, DoozyUI is suitable for anything from amateur developers to professional software and games studios.
Managing and animating an UI used to be something only experienced developers could do. Thanks to DoozyUI, now everyone can create a native Unity UI on their own. Whatever your skill level, DoozyUI’s powerful editors gives you full creative control – without needing to write a single line of code. And, if you’re into coding, you’ll find a professional API ready to go.
With many video tutorials available, you’ll get started creating your first UI in no time. Start creating and bring your ideas into the world!
We've been developing this system since 2015, when it was first released on the Unity Asset Store, and we have a lot of plans for it, going forward. A lot of thought, work and love went into creating this product and we really hope you’ll enjoy using it.
FEATURES
- Use native uGUI
- Easy to learn. Intuitive design
- Native Editor Integration
- Node Graph UI Navigation Flow
- Theme Management System
- Automated Sound Pooling
- Touch Detector
- Orientation Detector
- Supports all platforms
- Resolution Independent
- Mobile friendly
- In-Editor Documentation Links
- Searchable Documentation
- Video Tutorials
- Dedicated Support
- Clean Code. Easy to understand, modify and test.
- Full C# source code is provided
:: Quick Setup - setup is incredibly fast and easy, just plug and play. Intuitive controls mean fast tweaks and optimal workflow, so you have more time for the important stuff.
:: Theme Manager - change how your app/game looks with an automated theme / skin management system
:: Resolution Independent - the UI Animator calculates all the resolution and aspect ratio changes and adjusts the animations accordingly. Because of this all the animations look and feel the same in both Landscape and Portrait Modes.
:: Progress Bars – YES! Create any type of progress indicator you can imagine and then animate and control it without writing a single line of code.
:: Save Time - Save your animations and load them in other projects. (asset files)
:: Fun - create all kinds of animations in Play Mode, save them and use them in any project. (with DoozyUI)
:: Easy - create intuitive menus without writing a single line of code with a WYSIWYG approach.
:: Total Control - fine tune all the animations settings from timings, to delays, to ease functions.
COMPONENTS
- Back Button
- Color Target Image
- Color Target ParticleSystem
- Color Target RawImage
- Color Target SpriteRenderer
- Color Target Text
- Color Target TextMeshPro
- Font Target Text
- Font Target TextMeshPro
- Game Event Listener
- Game Event Manager
- Gesture Listener
- Graph Controller
- Key To Action
- Key To Game Event
- Orientation Detector
- Progress Target Action
- Progress Target Animator
- Progress Target AudioMixer
- Progress Target Image
- Progress Target Text
- Progress Target TextMeshPro
- Progressor
- Progressor Group
- Radial Layout
- Scene Director
- Scene Loader
- Soundy Controller
- Soundy Manager
- Soundy Pooler
- Sprite Target Image
- Sprite Target SpriteRenderer
- Texture Target RawImage
- Theme Manager
- Touch Detector
- UIButton
- UIButton Listener
- UICanvas
- UIDrawer
- UIDrawer Listener
- UIPopup
- UIPopup Manager
- UIToggle
- UIView
- UIView Listener
------
NODY - a node graph engine built around modular node components which can be connected to form Graphs. Being an important part of the system, Nody was specifically designed to create, visualize and manage UI navigation flows.
- Graph Controller
- Graph / SubGraph
NODES
- UINode
- Game Event Node
- Sound Node
- SubGraph Node
- Theme Node
- Back Button Node
- Portal Node
- Switch Back Node
- UIDrawer Node
- Activate Loaded Scenes Node
- Load Scene Node
- Unload Scene Node
- Application Quit Node
- Random Node
- TimeScale Node
- Wait Node
- Start Node
- Enter Node
- Exit Node
------
SOUNDY - a complex sound management system that works side by side with DoozyUI. It can play sounds from one of its sound databases, or directly by using AudioClip references, or through MasterAudio (a third-party plugin). It also features an automated sound polling system that does not require any external management.
- Soundy Manager
- Soundy Pooler
- Soundy Controller
------
TOUCHY - a touch detection system that comes with DoozyUI. Captures touches (and clicks) from Unity’s native Input solution and passes it the system with a few extra bits of info.
- Touch Detector
- Gesture Listener
------
INTEGRATIONS
- Playmaker
- MasterAudio
- TextMeshPro
------
IMPORTANT
DoozyUI version 3 is not compatible with version 2. They may seem similar, but the code base is quite different. Basically version 3 is an entirely new software that was inspired by version 2. Thus, they cannot be compatible.
REQUIREMENTS
DOTween is required to be installed and its initial setup performed before installing DoozyUI.
DOTween minimum required version v1.2.235
DOTween download link: https://assetstore.unity.com/packages/tools/animation/dotween-hotween-v2-27676
GETTING STARTED
After importing DoozyUI, it will perform its initial setup and you'll be ready to start using it.
DoozyUI's Control Panel can be opened from Tools > Doozy > Control Panel (or by using the Alt+D shortcut)
DoozyUI's Nody Window can be opened from Tools > Doozy > Nody
LINKS
DoozyUI Website: http://doozyui.com/
DoozyUI Documentation: http://doozyui.com/learn/documentation/
YouTube Channel (video tutorials): http://www.youtube.com/c/DoozyEntertainment
Facebook Page: https://www.facebook.com/doozyentertainment
Twitter: https://twitter.com/doozyplay
Discord (invite): https://discord.gg/y9Axq7b
---- Version 3.1.3 ---- Added a StopAnimation method to the Progressor class Added an automated system to remove the dUI_MANAGER symbol if deleting the Doozy folder Fixed UIView check for layout controller method Fixed issues when missing theme properties are encountered Fixed UIComponentBase ArgumentOutOfRangeException when trying to remove any null references from the Database Changed ColorTargetSelectable and SpriteTargetSelectable components showing a Selected state option from Unity 2019.3 to 2019.1 ---- Version 3.1.2 ---- Fixed compatibility issues with 2019.3 Fixed animations changing z scale when instant animation is used. Fixed UIView not jumping to the custom start position on awake, if the option is enabled. ---- Version 3.1.1 ---- New Components - Color Target Selectable - Color Target UnityEvent - Sprite Target Selectable - Sprite Target UnityEvent - Texture Target UnityEvent New UnityEvents - Color Event - Sprite Event - Texture Event Added UIPack support Added SwitchBack Mode to the PortalNode. Now it can remember the source node and allow going back to it Added null checks when getting derived Node types Added a toggle option for the UIPopup to disable the automated selection of the previously selected button when the UIPopup gets hidden Added the 'HideCurrentVisiblePopup' method, to the UIPopupManager, that hides the UIPopup that is currently visible (and in the PopupQueue) Fixed scroll not working in the Control Panel Fixed UIView not resetting to its start values OnDisable Fixed SoundyController from being created outside the dynamic sounds pool at runtime, thus causing issues in certain use-cases Changed the way UIView works with nested views. Now it will show a warning message (in the custom inspector) if the GameObject of an UIView with nested views is set to get disabled when the view is hidden. ---- Version 3.1.0 ---- New Theme Management system for colors, sprites, textures, fonts and TextMeshPro font assets) New components - Theme Manager - Color Target Image - Color Target ParticleSystem - Color Target RawImage - Color Target SpriteRenderer - Color Target Text - Color Target TextMeshPro - Font Target Text - Font Target TextMeshPro - Sprite Target Image - Sprite Target SpriteRenderer - Texture Target RawImage - LayoutController New Node - Theme Node Added SetVisibility methods for the UIView Added wait option for any UIView actions in WaitNode Added wait option for any UIButton actions in WaitNode Added wait option for any UIDrawer actions in WaitNode Added global listen option for any UIView actions in PortalNode (use with care) Added global listen option for any UIButton actions in PortalNode (use with care) Added global listen option for any UIDrawer actions in PortalNode (use with care) Added global PauseAllControllers and MuteAllControllers options to the SoundyController component Added UIPopup InstantHide method Added a new option in Tools/Doozy/Refresh that performes a global refresh for the entire system Added a silent automated folders validation process when opening the Control Panel Fixed the Playmaker Action - Back - not working Fixed ProgressTargets losing references Fixed active and global nodes from reacting when the GraphController is disabled Fixed UIButton long click reset not being triggered in some special use-cases Fixed SoundyControler not getting muted and paused when mute all / pause all was activated Fixed SoundyControler not registering the LastPlayedTime and getting killed unexpectedly Fixed UIView InstantHide and InstantShow methods not working as expected Fixed UIPopup invoking its UIAction when instantiated (on first Hide) Fixed UIToggle not updating its value at runtime and also not triggering animations and events Fixed a bug with the node connection management system that failed in two particular use-cases Changed the way UIView works with nested views. Now it will automatically set DisableGameObjectWhenHidden to hide if it has at least one nested view Changed the way UIView interacts with a parent LayoutGroup. Now it gets positioned and resized dynamically, but the Move animation no longer works. ---- Version 3.0.c4 ---- Fixed Coroutiner spawning multiple clones. Fixed Coroutiner null instance when in the editor. Fixed UIView not taking into account the start delay when invoking its actions. Fixed UIPopup not taking into account the animations start delay when invoking its actions. Fixed an issue with the AnimatorEventDrawer not checking if the referenced Animator GameObject is active or not Fixed ProgressTargetText and ProgressTargetTextMeshPro string builder initialize issuse Fixed AssetUtils paths by replacing the backslashes with forward slashes to combine asset paths Removed the UIImage component ---- Version 3.0.c3 ---- Fixed install issues on Mac Fixed missing UIAnimationDatabase issue ---- Version 3.0.c2 ---- New Radial Layout component that lays out child elements in a radial arrangement New Progress Target AudioMixer component that is used by a Progressor to update an exposed parameter value of an AudioMixer New Progress Target Action component that is used by a Progressor to trigger an UIAction at a set progress or value New Key to Action component that listens for the set input key or virtual button and, when triggered, executes an UIAction New UIImage component Added a Refresh button, in the Control Panel - General tab, that creates any missing folders and refreshes all the databases Added video links for the UIPopup and UIPopupManager components Added a Notes option for every node. This option can also be toggled on/off from the Control Panel at the Nody tab (default is enabled). Added Hide on Back Button option for the UIDrawer. You can now disable the Back button from closing the drawer. Added new options for the UIDrawer to toggle HideOnBackButton and DisableBackButton Added new options for the UIPopup to toggle DisableBackButton and to close it via AnyButton Added an Object reference for any GameEventMessage Added OnRightClick for the UIButton component Added GetButtons static method in the UIButton class, that returns a list of all the UIButton, registered in the UIButton.Database, with a given button category and button name Added ShowViewCategory and HideViewCategory static methods in the UIVeiw class, that show/hide all the UIViews with the given view category Added ShowViewNextFrame and HideViewNextFrame static IEnumerators to the UIView class Fixed UIDrawer Container to have its Canvas and Garphic Raycaster enabled when created Fixed UIDrawer not properly managing the Container's Canvas and Graphic Raycaster enabled states Fixed the ReflectionTypeLoadException error when getting all Types in an Assembly Fixed a few wrong spelled labels Fixed Nody node selection order when nodes are overlapped after a copy paste operation. Trying to drag the newly created node would not work as expected as the original node got dragged instead of the copied node. Fixed UIButton not triggering the UIAction and UnityEvent when the button is a 'Back' button Fixed UIButtonListener not getting triggered when the 'Back' button is used Fixed UIPopupEditor giving a null reference exception when using an Overlay without a Canvas and/or GraphicRaycaster. Now they will get automatically added if missing (editor only) Fixed UIContainer init implementation for the Canvas, GraphicRaycaster and CanvasGroup components Fixed UIPopup Container having its Cranvas and GraphicRaycaster components disabled when getting created (editor only) Fixed UIPopup destroy sequence happening a frame ahead of time Fixed Preview Animation not updating start values for UIView and UIPopup Fixed UIToggle giving out errors when selecting an animation preset Fixed the SendGameEvent Playmaker action not sending a game event as expected Fixed GraphController to allow the setting of a custom active node on enable Changed the way UIConnection gets its ValueType from a Socket Changed the Graph Controller initialization by eliminating the 2 frames delay and adding a 1 frame delay when activating start and/or enter nodes Changed Example 9 scene to work with a Controller Changed UIButton OnClick now works only for the left button mouse click as OnRightClick behavior has been added to work for the right mouse button Changed the way the UINode shows and hides views, by adding a one frame delay Changed the way AssetUtils creates a scriptable object by allowing it to create missing folders Removed the restriction for the UIView to have a custom view category and view name to be able to show and hide Optimized ProgressTargetText and ProgressTargetTextMeshPro by reducing the GC. They now use a StringBuilder instead of strings concatenations.