Search Unity

DoozyUI: Complete UI Management System

Discussion in 'Assets and Asset Store' started by AlexMares, Apr 13, 2016.

?

Would you like to see a free version of DoozyUI with limited features?

Poll closed May 12, 2016.
  1. Yes

    1 vote(s)
    33.3%
  2. No

    2 vote(s)
    66.7%
  1. AlexMares

    AlexMares

    Joined:
    Mar 4, 2015
    Posts:
    498
    Hi @aheidorn,

    Yes, DoozyUI 2.7p2 will also fix those warnings. Right now, we estimate that tomorrow we will submit the patch for review.
    Also we just got a new microphone today and we'll be able to create the New Features features video for 2.7, 2.7p1 and 2.7p2 (as our previous microphone died on us). The video will be ready by tomorrow as well.

    Thank you for your support and patience.

    Cheers,
    Alex
     
  2. AlexMares

    AlexMares

    Joined:
    Mar 4, 2015
    Posts:
    498
    Good news! We are happy to announce that DoozyUI 2.7p2 is now ready to be submitted. We are doing some extra tests right now, before we launch it.

    Here are the release notes to see what to expect from it.

    ------
    Version 2.7p2

    IMPROVEMENTS
    UIManager
    --Added a new toggle to disable the automated system that disables button clicks when an UIElemnt is in transition; the system is enabled by default

    CHANGES
    --DoozyUI now requires Unity 5.4.0 or higher
    UIManager
    --Changed the buttonClicksDisabled from a bool to a bool property (works like an additive bool) and added three new methods to the UIManager: DisableButtonClicks, EnableButtonClicks and EnableButtonClicksByForce

    FIXES
    --Fixed compatibility issues with Unity 5.5
    --Fixed an issue with the automated system that disables button clicks, that caused the buttons to remain disabled when an UIElement got disabled.
    --Fixed a strange issue, caused by Unity, when using a VerticalLayoutGroup, a HorizontalLayoutGroup or a GridLayoutGroup with a Canvas that contains Images. Sprites, referenced to Image components, were drawn with an offset, that does not appear in the Scene view nor in the Inspector. In order to fix this, we force a redraw for the affected Canvases.

    ------
    PLEASE BACKUP PROJECTS BEFORE UPDATING!!!
    UPDATE NOTES
    Keep in mind that all your databases (ElementNames, ElementSounds, ButtonNames and ButtonSounds) are saved in Assets/DoozyUI/Data/DoozyUI_Data.asset. Do not overrwite this file because all databases will be reset to their default values.
     
  3. AlexMares

    AlexMares

    Joined:
    Mar 4, 2015
    Posts:
    498
    DoozyUI 2.7p2 version has been launched and is now pending review. :)
     
    wahyuway likes this.
  4. AlexMares

    AlexMares

    Joined:
    Mar 4, 2015
    Posts:
    498
    Hi All,

    Quick Update
    The following modules are now available as standalone versions:
    - UIButton: http://u3d.as/CKp


    - Orientation Manager: http://u3d.as/D4a


    - Font Awesome: http://u3d.as/Dqm


    Next few items on our development roadmap are:
    - UIElement: will allow animating any RectTransform, by calling Show / Hide methods, with sounds and UnityEvents callbacks
    - UIToggle: an upgraded Toggle component (similar to the UIButton); it will come with an UIToggleGroup as well for fexibility
    - UIDataBind: a data bind solution for UI

    Also we are making sure that the current version of DoozyUI remains stable and reliable for your on-going projects.

    Announcement
    We want to start weekly live tutorial sessions (free for everyone) starting with January. The FullHD stream tests we did in November, on YouTube, were a success and now we are setting up a system to manage the videos. Should you have any particular topics you would like us to cover, let us know.

    Cheers,
    Doozy Entertainment
     
  5. AlexMares

    AlexMares

    Joined:
    Mar 4, 2015
    Posts:
    498
  6. cosperda

    cosperda

    Joined:
    Oct 11, 2016
    Posts:
    36
    Well, i no longer see my question i posted a few days ago, if you removed it please tell me why
     
  7. AlexMares

    AlexMares

    Joined:
    Mar 4, 2015
    Posts:
    498
    Hi @cosperda,

    I just saw your question, and we didn't respond because it was posted on another older thread that we are not watching. You can see it here. We treat everybody with respect and would never do such a thing to delete or censor a post.

    Your question:
    "Is this the right place to ask questions ? if not, do you have another forum link?

    My question is straight forward, are you able to drag and drop UiElements while the game is playing ? maybe i overlooked it, but cant seem to find a way to make the ui elements moveable once your in game.

    cosperda, Sunday at 10:24 PM"

    Our answer:
    You cannot drag and drop an UIElement. You can animate them by setting IN/LOOP/OUT animations and trigger Show (starts IN animation) or Hide (starts OUT animation) for any UIElement.
    The drag and drop functionality is on our development roadmap, but we haven't gotten to it yet.
    Should you need help, find issues or have any suggestions, don't hesitate to write us a message on this thread or send us an email at support@doozyentertainment.com
    We try to respond as fast as possible, while we develop this asset even further and fix any issues we come across.

    Did this help you out?

    Cheers,
    Alex
     
  8. paolo-suarez

    paolo-suarez

    Joined:
    Jul 21, 2015
    Posts:
    2
    Hi @allemaar, do you guys think you would consider pooling and preloading support for notifications.
     
  9. Aceego

    Aceego

    Joined:
    Apr 5, 2015
    Posts:
    37
    i work months with your awsome tool Doozy ui, i use unity 5.4, when i started a new project i get this error:
    Assets/DoozyUI/_EXAMPLES/Scripts/GameManagerExample.cs(3,7): error CS0246: The type or namespace name `DG' could not be found. Are you missing a using directive or an assembly reference?
    how can i fix it?
     
  10. AlexMares

    AlexMares

    Joined:
    Mar 4, 2015
    Posts:
    498
    Hi @Aceego,

    I believe you forgot to press the setup button for DOTween. You can do that by going to Tools --> DOTween Utility Panel --> Setup DOTween...
    That will import the missing files, and thus the missing namespace, and you should be good to go. That is the normal way of installing and using DOTween.
    Also take a look at the initial setup for DoozyUI (you will have to create a sorting layer named 'UI', because it cannot be done from code at the moment).

    See video (just view the first few minutes) - How To create a Simple UI -


    Did this fix your issue?

    Cheers,
    Alex
     
  11. AlexMares

    AlexMares

    Joined:
    Mar 4, 2015
    Posts:
    498
    Hi @paolo-suarez,

    That is not a bad idea. I'll add it to our research board and see how we can implement it safely.
    Thank you! :)

    Cheers,
    Alex
     
  12. Aceego

    Aceego

    Joined:
    Apr 5, 2015
    Posts:
    37
    now it works again :) thanks
     
    AlexMares likes this.
  13. AlexMares

    AlexMares

    Joined:
    Mar 4, 2015
    Posts:
    498
    Good news! We are happy to announce that DoozyUI 2.7p3 has been submitted for review to the Unity Asset Store.
    Here are the release notes to see what to expect from it.

    ------
    Version 2.7p3

    FIXES
    UIElement
    --Fixed an issue with the 'disable when hidden' option. When having one or more UIElements as a child of another UIElement, with the same elementName, and the parent has 'disable when hidden', only the parent was shown. This has now been fixed.
    UIButton
    --Fixed the issue when adding/removing showElements, hideElement and gameEvents not getting saved on scene changed.
    --Changed the way buttonName and onClickSound strings are handled by the custom inspector. This should fix any inconsistency between what you do in the inspector and what gets saved to the component.
    --Optimized the custom inspector code


    ------
    PLEASE BACKUP PROJECTS BEFORE UPDATING!!!
    UPDATE NOTES
    Keep in mind that all your databases (ElementNames, ElementSounds, ButtonNames and ButtonSounds) are saved in Assets/DoozyUI/Data/DoozyUI_Data.asset. Do not overrwite this file because all databases will be reset to their default values.
     
    johanneskopf likes this.
  14. antsonthetree

    antsonthetree

    Joined:
    May 15, 2015
    Posts:
    102
    How can I map a key press to a button? For example I would like the ESC key to trigger the back button or close the menu.
     
  15. cosperda

    cosperda

    Joined:
    Oct 11, 2016
    Posts:
    36
    Yes, thankyou.
     
  16. AlexMares

    AlexMares

    Joined:
    Mar 4, 2015
    Posts:
    498
    Hi @antsonthetree,

    DoozyUI has the 'Escape' key mapped in the Update method inside the UIManager. The code looks like this:
    Code (CSharp):
    1.   if (Input.GetKeyDown(KeyCode.Escape) && backButtonDisabled == false) //The listener for the 'Back' button event
    2.             {
    3.                 SendButtonClick("Back", false, true);
    4.             }
    Now, if you want to map a particular key (or even the 'Escape' key) to perform another action, you can simply send a button click event (that you are listening for) by pressing a key.

    Let's do a simple example.
    Say you want to 'CloseMainMenu' when you press the 'Space' key. All you have to do is write this simple code inside an Update method of a script that is attached to any gameObject inside your scene. Here is the code:
    Code (CSharp):
    1.         void Update()
    2.         {
    3.             if (Input.GetKeyDown(KeyCode.Space))
    4.             {
    5.                 SendButtonClick("CloseMainMenu");
    6.             }
    7. }
    Did this help you out?

    Cheers,
    Alex
     
  17. jprocha101

    jprocha101

    Joined:
    Apr 8, 2015
    Posts:
    134
    Hi @allemaar, any updates on DoozyUI 3.0? I am about to start a project and wondering if I should implement the UI now or wait until the new version comes out.

    Thank you for such an awesome, time-saving asset!
     
    Last edited: Dec 30, 2016
  18. TommiH

    TommiH

    Joined:
    Jan 14, 2008
    Posts:
    253
    Hello allemaar,

    Any nice way to disable the hard-coded Escape = back check in the UIManager.Update function you just mentioned? The only way I see in the code is "backButtonDisabled" but that doesn't seem ideal.

    And also: In the Example4 scene at least, the QuitMenu seems to be set up to appear on pressing ESC. But I don't understand how that's connected. I see that the QuitButton has been set up as the Back button, but I don't see any reference from QuitButton to QuitMenu...
     
    Last edited: Dec 28, 2016
  19. steeloblk

    steeloblk

    Joined:
    Dec 27, 2014
    Posts:
    20
    Hi Alex, quick question,

    I have an OnClick event on my button that unloads the current scene. The problem is that the unload happens so fast that it does not play the click sound from the button. I used IEnumerator to slow it down in order to play the click. Is there any other way to ensure that the click is played before or while executing the onclick event to unload scene?

    thanks
     
  20. Dragonhill

    Dragonhill

    Joined:
    Jun 2, 2010
    Posts:
    22
    <just realized I need DG.Tweening> nvm the rest

    I just downloaded latest Doozy in a fresh project and received a ton of name space errors

    Assets/DoozyUI/Scripts/UI/UIAnimator.cs(6,7): error CS0246: The type or namespace name `DG' could not be found. Are you missing an assembly reference?

    i'll try to fix to get it running but that's the kind of thing that gets bad reviews. <I'm smart enough not to do that>

    Unity 5.5.0f3

    ~Dragon
     
    Last edited: Jan 4, 2017
  21. jprocha101

    jprocha101

    Joined:
    Apr 8, 2015
    Posts:
    134
    @Dragonhill you need to download and setup dotween from the asset store. This is mentioned in doozy UI asset store page.

    Edit: I see you figured it out :)
     
  22. reggie_sgs

    reggie_sgs

    Joined:
    Jun 29, 2014
    Posts:
    276
    I've just started working with Doozy and I'm really happy with it so far. The only thing I can't figure out is how to hook up an event. All of the documentation just indicates you use Unity events. After reading the docs on Unity's events, I still don't see how to subscribe to the event created on the button. Can you post a code example of how to listen for a button event?

    Thanks
     
  23. AlexMares

    AlexMares

    Joined:
    Mar 4, 2015
    Posts:
    498
    Hi All,

    We had a longer vacation for the new years and now we are back and ready to work. :)

    @jprocha101
    any updates on DoozyUI 3.0? I am about to start a project and wondering if I should implement the UI now or wait until the new version comes out.
    We are working on it, right now late February is our current estimated date. It takes so long because there are a lot of features to test and consider. And another delay factor is that when we find, or get told by you guys, about any new issue, we try to fix it right away and release a patch.
    You can start using the current version, as it is stable and maintained.

    @TommiH
    Any nice way to disable the hard-coded Escape = back check in the UIManager.Update function you just mentioned? The only way I see in the code is "backButtonDisabled" but that doesn't seem ideal.
    The idea behind this is to always have the back button available and disable it if needed. Having a single check in an Update() function should not affect any project of any size. We tried to avoid using the Update() function, but in some cases, like this one, it was unavoidable.

    And also: In the Example4 scene at least, the QuitMenu seems to be set up to appear on pressing ESC. But I don't understand how that's connected. I see that the QuitButton has been set up as the Back button, but I don't see any reference from QuitButton to QuitMenu...

    There is a check, if you are in the MainMenu and you press the back button, then we trigger a show for the QuitMenu. This is done in the UIManager. We added it in order to help you guys have an 'out of the box' quit menu option.

    @steeloblk
    I have an OnClick event on my button that unloads the current scene. The problem is that the unload happens so fast that it does not play the click sound from the button. I used IEnumerator to slow it down in order to play the click. Is there any other way to ensure that the click is played before or while executing the onclick event to unload scene?
    At the moment, there is no other way. We will be adding UnityEvents for the UIButton for OnHoverEnter, OnHoverExit, OnPointerDown, OnPointerUp, OnClick, OnDoubleClick and OnLongClick. The OnClick event you are using is from Unity's Button component and, as a principle, we are not interfering with the native component's functionality, we are only adding new ones.

    @Dragonhill
    Assets/DoozyUI/Scripts/UI/UIAnimator.cs(6,7): error CS0246: The type or namespace name `DG' could not be found. Are you missing an assembly reference?
    i'll try to fix to get it running but that's the kind of thing that gets bad reviews. <I'm smart enough not to do that>

    Thank you for not giving a bad review based on that. As you discovered, you were missing the DOTween asset, or it probably wasn't set up (the initial Setup button). We decided not to include another asset inside our own because we didn't think it's fair to that asset's creator (we can do it as it is a free asset, and Daniele, the DOTween creator, allows it). Anyway, should you need help, find any issues or have any suggestions for us, don't hesitate to send us a message.

    @reggie_sgs
    I've just started working with Doozy and I'm really happy with it so far. The only thing I can't figure out is how to hook up an event. All of the documentation just indicates you use Unity events. After reading the docs on Unity's events, I still don't see how to subscribe to the event created on the button. Can you post a code example of how to listen for a button event?
    It's quite easy actually, all you have to do is use an UITrigger to trigger your desired method.Just watch the UITrigger video and see how it's done.
    You don't need to write code because the UITrigger has been optimized to work with the system better then if you would write your own listener. It gets registered in a Dictionary and get's notified if it should react, only if the specified trigger setting has been registered by the system.
    Should you need more help, don't hesitate to send us a message.:)

    Well, that should cover the previous requests, should you guys have new ones, fire away! :)

    Cheers,
    Doozy Entertainment
     
    jprocha101 likes this.
  24. wahyuway

    wahyuway

    Joined:
    Oct 7, 2013
    Posts:
    84
    Hi @allemaar ,
    i found strange behaviour. I had mainmenu and game scene. When i come back to mainmenu from my game scene as attached. Temp Audio did not destroyed. Any suggestion how to solve this?
     

    Attached Files:

    Last edited: Jan 17, 2017
  25. AlexMares

    AlexMares

    Joined:
    Mar 4, 2015
    Posts:
    498
    Hi @wahyuway,

    That is a strange behavior indeed. Can you please tell us the following:
    1. What DoozyUI version are you currently using? (you can see it at the bottom of the Control Panel window)
    2. What Unity version are you working on?

    Thank you for telling us about this, we'll look into it right away.

    Cheers,
    Alex
     
  26. wahyuway

    wahyuway

    Joined:
    Oct 7, 2013
    Posts:
    84
    @allemaar
    1. DoozyUI v 2.7p3
    2. Unity 5.5.0p3

    I'll try to build simple project if i can repro it again when i get home.
     
  27. wahyuway

    wahyuway

    Joined:
    Oct 7, 2013
    Posts:
    84
    Please ignore this. Its my fault. After debugging, i need to correct my timescale to fix this.

    So far, i am happy with latest version. Thanks for your support :)
     
  28. AlexMares

    AlexMares

    Joined:
    Mar 4, 2015
    Posts:
    498
    Hi @wahyuway,

    Thanks you for letting us know why that issue happened and thank you very much for your support. :)
    Version 2.7p4 will be released soon and it will come with some fixes to some issues that you guys encountered and helped us resolve them.

    Cheers,
    Doozy Entertainment
     
  29. Mirgan

    Mirgan

    Joined:
    Feb 2, 2016
    Posts:
    25
    Hi. I'm using Doozy 2.7p3 and Unity3d 5.5.0f3. When using Doozy UI in my projects I have encountered a few bugs. I copy 2 buttons (ToggleSound and ToggleMusic) from your scene (Example 1). In Editor mode all everything works fine, but under android the buttons don't work (nothing happens when i touch it). BUT, then I add a new button and set it's name to ToggleSound/ToggleMusic and under android press on my button once. Your buttons also starts to work. Please help me understand what am I doing wrong?

    2. When running a scene (Example 1 or another your examle) some hidden panels are briefly shown on the screen in the location where IN animation ends. Then the pnael dissapears and the IN animation begins, bringing the panel to it's animation end position. The bug always occurs when building Unity projects to Windows Standalone or Android app (haven't tested on other platforms yet). The bug DOES NOT occur in Unity Editor.

    Thank you!
     
  30. TommiH

    TommiH

    Joined:
    Jan 14, 2008
    Posts:
    253
    Hello,

    What's the correct way to duplicate UIElements? The system seems to force any elements that share an element name to be deactivated and activated in unison, but I need to activate and deactivate a big number of similar elements individually. Creating a new element name for each element seems pretty impractical, and I'd also like to be able to spawn GUI elements from code.
     
  31. AlexMares

    AlexMares

    Joined:
    Mar 4, 2015
    Posts:
    498
    Hi @Mirgan,

    When using Doozy UI in my projects I have encountered a few bugs. I copy 2 buttons (ToggleSound and ToggleMusic) from your scene (Example 1). In Editor mode all everything works fine, but under android the buttons don't work (nothing happens when i touch it). BUT, then I add a new button and set it's name to ToggleSound/ToggleMusic and under android press on my button once. Your buttons also starts to work. Please help me understand what am I doing wrong?

    When creating a new UIButton or UIElement, the Inspector script for each of the components adds several other components like the UI Animation Manager, the Canvas and the Graphic Raycaster. Are you missing any of these components from your copied buttons? We really need to release the UIToggle to make toggles easy to create and manage.

    When running a scene (Example 1 or another your examle) some hidden panels are briefly shown on the screen in the location where IN animation ends. Then the pnael dissapears and the IN animation begins, bringing the panel to it's animation end position. The bug always occurs when building Unity projects to Windows Standalone or Android app (haven't tested on other platforms yet). The bug DOES NOT occur in Unity Editor.
    We will test this and see what happened. In the past, we were disabling the UICamera for the first frame, but with the new animator system that was made redundant. We did make some changes to the system from 2.7p2 to 2.7p3 and that might have caused the glitch you are experiencing. We'll do a rollback and some tests to see if that is the case and then release a patch to this issue. Thank you for letting us know about it!

    If you find anything else that seems out of place, please let us know. Even though we are actively developing the next major version 3.0, we want this version to be as bug free as possible.

    Cheers,
    Alex
     
  32. AlexMares

    AlexMares

    Joined:
    Mar 4, 2015
    Posts:
    498
    Hi @TommiH,

    What's the correct way to duplicate UIElements? The system seems to force any elements that share an element name to be deactivated and activated in unison, but I need to activate and deactivate a big number of similar elements individually.
    Let me explain how the system is supposed to work because that might give you some insight on how you should approach your UI planning.
    All UI's will have a MainMenu, a SettingsMenu, a PlayMenu and a QuitMenu. These can be your main element names.
    Let's assume that the MainMenu has 5 animated parts (each button appears with a different animation and with a different timing). Then you should have 5 UIElements that share the same element name. Thus, when showing 'MainMenu' they will all get triggered and execute their respective IN animation (same applies for the hide event).
    If, you need to have 5 UIElement with the same animation and the same name, we recommend using a preset (either a premade one or a custom one).
    If you have nested UIElements, you don't need to have them hidden at start because the parent UIElement will see to that.

    Creating a new element name for each element seems pretty impractical
    You don't need to create an elementName for each UIElement, you need one for each view. The term view being the 'MainMenu' for example. You can have 10 or 20 UIElements for the 'MainMenu' view, and you only need one elementName for them. Thus, when you want to show the 'MainMenu' all the UIElements that compose it will get shown with their particular animations.

    I'd also like to be able to spawn GUI elements from code.
    You can do that by having prefabs of the uGUI UIElements you intend to spawn and, if needed, you can also use animate at start so that it will play an IN animation on spawn. The UINotification works exactly like that. It is a prefab, that get's spawned (under the UI Container - this is important as we need a root canvas for the UI) and then it is managed with show and hide by the system.


    You said you need to activate and deactivate a big number of elements individually. Can you please give us a bit more info so that we may be able to give you a more pertinent solution to your particular setup?

    Cheers,
    Alex
     
  33. Mirgan

    Mirgan

    Joined:
    Feb 2, 2016
    Posts:
    25

    Hi, Alex.

    I checked and my copied buttons contain identical components and configuration=( Button work fine in Editor and standalone mode, dosn't work on on touch devices.

    Are you add a UIToggle button in version 3?

    And i tell you about one more bug=)
    1. Open you scene (Example 1 or another).
    2. Run scene in Editor mode
    3. On one of elements (ShopMenu 10 or SettingsMenu 10 or QuitMenu 100) try change in animation or out animation then press SHOW/HIDE buttons.
    4. Аfter you configure the animation - press config button on top-right corner of component and choice "copy component"
    5. Stop play mode
    6. press config button on top-right corner of component and choice "paste component values"
    7. Now you UIElement fully broken and hide @Start option dosn't work( This component will be always visible when start play scene=(

    Thanks for support and sorry for my bad English.
     
  34. erich202

    erich202

    Joined:
    Sep 24, 2016
    Posts:
    38
    Hi,

    How do I hide these icons? (OK, puzzle piece, sound)

    upload_2017-1-24_18-1-49.png

    TIA,
    Eric
     
  35. milkcorp

    milkcorp

    Joined:
    Feb 26, 2012
    Posts:
    11
    Hi,
    UIButton can't receive the button events until finished animations of other UIElement ?
     
  36. Mirgan

    Mirgan

    Joined:
    Feb 2, 2016
    Posts:
    25
    Hi, if I get you right this is 3dIcons: screen.jpg

    just reduce the size of 3D Icons
     
  37. erich202

    erich202

    Joined:
    Sep 24, 2016
    Posts:
    38
    OMG, thank you <3
     
  38. SwiftIllusion

    SwiftIllusion

    Joined:
    Jan 22, 2012
    Posts:
    66
    @milkcorp What you're likely looking for is this - https://i.gyazo.com/e2234fe43e5407cc57100b42b0aecfaf.png
    At the bottom "Auto disable Button Clicks" it's on the automatically generated UIManager object.
    With that disabled you can click on buttons before the animations finish.


    @allemaar Speaking of the above, is there any way to adjust this individually per menu/button? I couldn't find an option for it but I may have just missed where it could be located.

    Also I'd like to ask, regarding the Graphic Raycaster object that has blocking options on the UI elements, is this somehow able to stop onclick events form going through the interface objects? I tried countless combinations of the available options and couldn't find one that did. If it were possible that would make it infinitely easier than having to have checks on all of my scene objects to compare via the event system if the pointer is over a game object or not.
     
  39. TommiH

    TommiH

    Joined:
    Jan 14, 2008
    Posts:
    253
    Thanks for the response. So from this I gather that it's not really meant for dynamic stuff manipulated from outside Doozy UI.

    What I'd like to have is comparable to this: When the player presses a key, all health bars of all the enemies visible will be hovered above their heads. It's not possible to know how many enemies there will be. So far, I've duplicated the health bar UIElement, creating enough duplicates to make sure they're enough. And now I'd like to use that as a pool to position above enemies. So I'd like to show as many health bars as there are enemies and hide the rest.

    Maybe I should just do that without Doozy UI? Seems like it's not really made for such a thing.
     
  40. AlexMares

    AlexMares

    Joined:
    Mar 4, 2015
    Posts:
    498
    Hi @Mirgan,


    Are you add a UIToggle button in version 3?
    Yes, we are adding an UIToggle button. It is way overdue. :)

    About the bug you found, we'll test it out and write a fix for it. We are releasing the 2.7p4 patch this week.

    Cheers,
    Alex
     
  41. AlexMares

    AlexMares

    Joined:
    Mar 4, 2015
    Posts:
    498
    Hi @milkcorp,

    Depending on how you use the system, you should be aware that there are some settings available to you.

    If an UIElemet is in transit (it's animating IN or OUT), all the UIButtons will not work. This feature has been introduced in order to prevent the user to click on a button by mistake, when an UIElement is animating. You can disable this feature by selecting the UIManager and disabling the 'Auto disable Button Clicks when an UIElement is in transition'.

    Another feature is that if you use button animations, the event will be sent after the animation has run. This is to allow your user to perceive the animation when he/she clicks the button. You can disable this feature from the target button by disabling the 'Wait for OnClick animations to finish'.

    Were these the features you were looking for?

    Cheers,
    Alex
     
  42. AlexMares

    AlexMares

    Joined:
    Mar 4, 2015
    Posts:
    498
    Hi @SwiftIllusion,

    The Graphic Raycaster is a native Unity UI component. It is very useful, especially if one overrides the sorting order for the UI. One of it's best features is that if a Graphic Raycaster is triggered (when the Canvas has override sorting enabled), Unity does not automatically check if that click against other Graphic Raycasters (it's quite efficient).

    Also I'd like to ask, regarding the Graphic Raycaster object that has blocking options on the UI elements, is this somehow able to stop onclick events form going through the interface objects?
    If you are trying to detect if a click/touch is over a game object (not related to the UI system), you need to implement your own solution. The Event System used by DoozyUI is native to Unity and it's meant for it's uGUI system.
    Now, in our projects, we create a simple script that checks Camera.main.ScreenToWorldPoint using the mouse or the touch position. Then we do a Physics2D.Raycast and see if an object in our game/app has been clicked/touched and run a script (for example ExecuteAction()).

    You should be aware that Unity has a click/touch system for it's UI already available, but for your 'world space' needs you have to have your own custom scripts.

    I tried countless combinations of the available options and couldn't find one that did. If it were possible that would make it infinitely easier than having to have checks on all of my scene objects to compare via the event system if the pointer is over a game object or not.
    You might be doing something wrong because you should not check all the scene objects on every touch. Use a raycast, either on Physics or on Physics2D.

    Did this make sense to you?

    Cheers,
    Alex
     
  43. AlexMares

    AlexMares

    Joined:
    Mar 4, 2015
    Posts:
    498
    Hi @TommiH,

    Depending on your game, you might want to have a 2D/3D 'health bar' gameObejct nested under the enemy prefab and not on the UI system. Thus they should hover over the enemies and, on button press/release, you to enable/disable them all (or even better enable/disable their sprite renderers).
    What you are trying to do by instantiating and destroying 'health bars' is very inefficient, it creates garbage and triggers the garbage collector without any good reason.

    We did not implement a system like the one you are looking for, inside the UI, because you can have an infinite number of health bars and they need to be managed. Having this much stress on the UI can negatively impact your game's fps.

    I would use a 3D bar with each enemy prefab and use a pooling system to manage the prefabs. This would also help you out with the correct positioning since the 'health bar' is nested under your enemy gameObject and you would no longer have to re-position them on each frame.

    Did this help you out?

    Cheers,
    Alex
     
  44. SwiftIllusion

    SwiftIllusion

    Joined:
    Jan 22, 2012
    Posts:
    66
    @allemaar Thank you very much for your response, though sorry you may have misunderstood me a bit.
    I'm already using Unity's built in on mouse solution for checking when it enters/is over/etc collider objects, and the issue I'm having is that things like 'on enter'/'on click' are triggering behind the GUI, which obviously you don't want happening. I don't believe the on enter/on exit which I need would work via the raycast method so that's not something I can simply replace.
    I was hoping that the options for the Graphic Raycaster attached to the UIelements could block these events happening through the interface, without me needing to use 'is pointer over game object' shown here - https://docs.unity3d.com/ScriptReference/EventSystems.EventSystem.IsPointerOverGameObject.html for every mouse interaction. But it sounds like that isn't its purpose.

    You may have understandably missed it in my message but I'd also like to know regarding the UImanager auto disabling button clicks when an event is transitioning, is there a way to enable it individually? I couldn't find it, and for some elements I'd like to have them clickable during a transition but for others that need a bit more safety (e.g. don't want them accidentally changing game options etc) I'd like them to not be clickable during a transition.
     
  45. fabiorizzo

    fabiorizzo

    Joined:
    Feb 1, 2017
    Posts:
    4
    Hello,

    I'm looking to buy a UI component, and Doozy Ui seems to be Awesome, but i have some doubts:

    1 - What is the main difference between MaterialUI and DoozyUI?
    2 - Can i integrate Doozy Ui with other ui tools (MaterialUI, Ngui and others...) ?

    Sorry if i made some bad questions, but i'm a new on unity world and i'm starting a new game, so, i'm very confused.

    thanks!

    Fabio
     
  46. AlexMares

    AlexMares

    Joined:
    Mar 4, 2015
    Posts:
    498
    Hi @SwiftIllusion,

    regarding the UImanager auto disabling button clicks when an event is transitioning, is there a way to enable it individually?
    That option is for the entire system.

    You can disable individual buttons, but you need a reference to them. Using that reference (to the UIButton), you have access to two methods:
    DisableButtonClicks() - Disables the button by making it non-interactable
    EnableButtonClicks() - Enables this button by making it interactable.

    You can detect if an UIElement is in transition by checking the following variable:
    UIManager.buttonClicksDisabled //The buttons will get disabled when an UIElement is in transition
    This is set to true every time an UIElement is in transition (IN or OUT) and false if no UIElement is animating.

    Did this help you out?

    Cheers,
    Alex
     
    SwiftIllusion likes this.
  47. AlexMares

    AlexMares

    Joined:
    Mar 4, 2015
    Posts:
    498
    Hi @fabiorizzo,

    What is the main difference between MaterialUI and DoozyUI?
    MaterialUI is very good if you want an 'out of the box' solution for an Android feel like menu, because if comes with a lot (if not all) Material Design elements. So if you want to develop an app that 'feels' native to Android, you should get it and work with that.
    DoozyUI is a bit more versatile and allows for a greater flexibility in your design. It does not come with premade components (yet), but it will give you the tools to manage/animate any type of UI setup either for an app or game.
    They are not similar systems as they cater to different project types.
    The one main thing they have in common is that they use and rely on the native Unity UI system (also known as uGUI) and they should be compatible with most other assets that extend it.

    Can i integrate Doozy Ui with other ui tools (MaterialUI, Ngui and others...) ?
    Yes, you can integrate DoozyUI with MaterialUI (and vice versa), but you will find it difficult/almost impossible to integrate it with NGUI. NGUI comes with it's own components and it's own UI solution/system. Thus by not extending the functionality of Unity's native UI (uGUI) it is not compatible with any other asset that works with it (like DoozyUI, MaterialUI and others...).

    Did this give you a better understanding of how these systems work?

    Cheers,
    Alex
     
    Last edited: Feb 6, 2017
    fabiorizzo likes this.
  48. fabiorizzo

    fabiorizzo

    Joined:
    Feb 1, 2017
    Posts:
    4
    Hello Alex,

    Thank you so much. You helped me a lot!

    Fabio
     
  49. AlexMares

    AlexMares

    Joined:
    Mar 4, 2015
    Posts:
    498
    Good news! We are happy to announce that DoozyUI 2.7p4 has been submitted to the Asset Store for review.

    Here are the release notes to see what to expect from it.

    ------
    Version 2.7p4

    FIXED
    UIElement
    --Fixed a warning about the unused variables that appeared if the orientation manager was not used.
    --Fixed an issue with improper drawing of Images on a Canvas when it was disabled when visible.
    UIButton
    --Fixed an issue that disabled the Canvas and the GraphicRaycaster before the OUT animation finished.

    CHANGES
    UIButton
    --If a Normal animation is enabled and a Highlighted animation is not enabled, when selected, the Normal animation will continue to play.

    ------
    PLEASE BACKUP PROJECTS BEFORE UPDATING!!!
    UPDATE NOTES
    Keep in mind that all your databases (ElementNames, ElementSounds, ButtonNames and ButtonSounds) are saved in Assets/DoozyUI/Data/DoozyUI_Data.asset. Do not overrwite this file because all databases will be reset to their default values.
     
  50. botojomomo

    botojomomo

    Joined:
    Dec 28, 2016
    Posts:
    7
    DoozyUI seems pretty great so far, but I'm having trouble making dropdowns work. I started on a new scene from scratch and think I followed the instructions. Everything seems to be working fine, except dropdowns are not.

    When in play mode, the drop down label box appears, but if I click on it, I only see a white outline of the actual drop down box. However, if I then select the UI Container and click Update Canvases & Renders, it then appears. But then, once I select something and then click on the box again, it's no longer visible again.

    The only way I can find to make this work is Update Canvases & Renderers every time I open the box, which is obviously not going to be shippable.

    Here's a gif demonstrating what I mean - when the mouse goes off screen it's clicking the update canvas button. http://imgur.com/a/OI2te

    The sorting layer of everything seems to be set to UI as it should be. Any suggestions?