Search Unity

DoozyUI: Complete UI Management System

Discussion in 'Assets and Asset Store' started by allemaar, 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. allemaar

    allemaar

    Joined:
    Mar 4, 2015
    Posts:
    456
    @jrDev

    That is exactly the idea here. DoozyUI is not a UI framework (that replaces the Unity native uGUI framework), it is a UI management system for the uGUI framework.

    You may be confusing using UI components with UI management. They are completely different things. Several components are assembled into layouts (or views). These views are static and you will need a way to show/hide them from screen, animate them, play sounds and so on. This is called UI management and you need to write a separate system (or systems) to accomplish this. And this is where DoozyUI comes in, it help you show/hide this views in a controlled manner while also providing animations, sounds and a lot of other things.
     
  2. jrDev

    jrDev

    Joined:
    Nov 5, 2008
    Posts:
    1,638
    Hello,

    So what you are saying is just to add the component scripts to the Gameobject to get animations and stuff? What would you recommend to use for dropdown menus?

    Thanks,
    jrDev
     
  3. Nyphur

    Nyphur

    Joined:
    Jan 29, 2016
    Posts:
    15
    I'm trying to toggle the UI on or off with a keyboard button, it should be a common use case but I can't seem to find a built-in option for it. Does DoozyUI have a global keyboard control feature I'm not seeing? The Keycode input on a UIButton won't do the job because the button has to be selected first.

    EDIT: Did it by creating a blank UINode for the idle state and using Portal nodes to listen for "UIOpen" and "UIClose" game events, then GameEventMessage.SendEvent in a script to toggle it. It works as expected, but is there really no standard way to have a GraphController listen for a global control input and take an action? Seems like a common enough design.

    BTW, FileUtils.cs has what looks like a typo in it: "namespace Doozy.Endgine.Utils" instead of "namespace Doozy.Engine.Utils". Doesn't make a difference as it's not used, but it makes the typo'd namespace show up in intellisense.
     
    Last edited: May 19, 2019
  4. allemaar

    allemaar

    Joined:
    Mar 4, 2015
    Posts:
    456
    @jrDev

    So what you are saying is just to add the component scripts to the Gameobject to get animations and stuff?
    That is not what I said at all.The system was designed to manage views and the UI navigation flow. That is its main purpose. It was not created to 'manage' micro animations as that would be a bit overkill. You can do it, but there are a lot of other ways that you can animate an object without the need of a complex system behind the animations.

    What would you recommend to use for dropdown menus?
    Either the native Dropdown component, or you can create your own dropdown animation/implementation with the help of Uniyt's Animator system (there are a lot of tutorials online on how to do this), or you can look through the Asset Store for a custom implementation that works with uGUI.
     
  5. allemaar

    allemaar

    Joined:
    Mar 4, 2015
    Posts:
    456
    @Nyphur

    We did not implement such a feature mostly because we didn't think of it. I'll add this to the features request board. Note that the next update 3.0c1 comes with a new component KeyToGameEvent that might be what you're looking for.

    The FileUtils tipo has been resolved starting from the 3.0c1 update and up.
     
  6. ThorHelms

    ThorHelms

    Joined:
    Apr 8, 2016
    Posts:
    3
    I'm trying to create a split screen menu with DoozyUI, where multiple menus (1 per player) can be active and in different states. But this would require a way to explicitly link a canvas and a graph controller, and I am unable to find a way to do this. Am I missing something? Else, I would like to make a feature-request for this :)
     
  7. Shirzad

    Shirzad

    Joined:
    Dec 8, 2016
    Posts:
    9
    Hello, first of all many thanks for the great UI system. I bought the doozyUI package. Now I wanted to create a simple ScrollView. Unfortunately it did not work. Can not create ScrollVies with Doozy? Many Thanks
     
  8. allemaar

    allemaar

    Joined:
    Mar 4, 2015
    Posts:
    456
    @ThorHelms

    You basically need two menus. Thus you'll have two Canvases (one on the left and on on the right). Then you'll need two Graph Controllers and two Graphs; one graph controller controls the graph for the left menu and the other graph controller controls the graph for the right screen.

    Then you need to hook them up properly in their respective UIFlow. Keep in mind that you should not use the 'Back' button as it might affect both UI flows (should they both be in a node that has a 'Back' button option). Just rename it to something else ('GoBack' maybe).
     
  9. allemaar

    allemaar

    Joined:
    Mar 4, 2015
    Posts:
    456
    @Shirzad

    DoozyUI does not offer a ScrollView component because you already have a native one inside Unity. The scroll view is a layout component and can be nested under an UIView that is controlled by DoozyUI.
     
  10. ThorHelms

    ThorHelms

    Joined:
    Apr 8, 2016
    Posts:
    3
    So what you're saying is that if I want 16 players, I need 16 graphs, 16 graph-controllers, and 16 canvases, most of which are the same, but with different names for buttons/views etc.? This seems sub-optimal - I would much rather be able to explicitly link a canvas and a graph controller directly if possible. Is there any chance you could implement that in the near future?
     
  11. allemaar

    allemaar

    Joined:
    Mar 4, 2015
    Posts:
    456
    @ThorHelms

    You are confusing a canvas with an ui flow. A canvas is a container of views. An ui flow can 'manage' a countless number of views that can be put under countless canvases.

    Your use-case was related to a split screen situation where you needed 2 parallel ui flows. One for each side of the screen. It is normal to allow the players to have different ui flows (thus have different UI layouts - one for each side of the screen, with their own animations, sounds, etc...)

    We have yet to see a game with the screen is being split into a grid of 4x4 (16 mini screens) and where 16 players play all on the same screen (thus the need of 16 parallel ui flows).

    The fact that you keep trying to 'link' a canvas to a graph controller makes no sense. You cannot link a layout element to a component that manages a graph (that in turn is used to handle ui navigation flows).
     
  12. ThorHelms

    ThorHelms

    Joined:
    Apr 8, 2016
    Posts:
    3
    I never said anything about 2 players, I said "multiple". I also never said the 16 players would all play on the same display - it could be 4 displays with 4 players each.

    In any case, the number 16 was simply an exageration, to let you know that I would like to be able to support MULTIPLE players, and not be limited in the number of players by simple overhead of a chosen library.

    My hope was that I could create two graphs: One for the main player, and one for all other players, where each player will have their own state of their menu. For example with 16 players: 1 player has control over the 'main menu', and the 15 other players each have control over their own instance of the 'secondary menu', each with their own state.

    The reason I'm talking about linking the graph-controller with a canvas is because that is the way I would implement the functionality I need, if I was making a UI library. I would then have each graph-controller create an internal state, based on the linked graph, listen to events from the linked canvas only, and send updates to the linked canvas only. That way I could programmatically create multiple instances of a graph-controller prefab, and canvas prefab, link them properly, and thus have infinite split screen possibilities.

    I'll try to ask once again, now with a more "reasonable" number of players: If I want to support 4 player split screen, where all players have identical menus but individual menu-states, do I need to explicitly create 4 different menu graphs?
     
  13. Tropobor

    Tropobor

    Joined:
    Mar 24, 2014
    Posts:
    43
    How do you go about using DoozyUi with Quest Machine from Pixel Crushers?

    ( edit) Nevermind , meantime, I've switched to another asset wich seems to be much simpler and more appropriate (RPG Talk), will ask question later about it, if I need. Thanks
     
    Last edited: May 27, 2019
    allemaar likes this.
  14. PleaseSelectAUse

    PleaseSelectAUse

    Joined:
    Apr 8, 2013
    Posts:
    2
    Hi,
    I'm doing some research before starting a project and I'm wondering if DoozyUI can be used for modding. That is, can it be used to create UI elements during runtime by parsing, for example, xml files?
     
  15. daschatten

    daschatten

    Joined:
    Jul 16, 2015
    Posts:
    124
    @allemaar Could you add a string format option for text progress targets?
     
  16. daschatten

    daschatten

    Joined:
    Jul 16, 2015
    Posts:
    124
    Is there a possibility to create a carousel like navigation? It would require different show and hide animations, maybe something like an inverse toggle on connections in nody?
     
  17. allemaar

    allemaar

    Joined:
    Mar 4, 2015
    Posts:
    456
    @PleaseSelectAUse

    You cannot create UI elements from xml files with DoozyUI.
    DoozyUI is not an UI framework, but a UI management system for the native Unity UI framework (uGUI).
    Whatever you can do with native Unity UI components, you can do with DoozyUI.
     
  18. allemaar

    allemaar

    Joined:
    Mar 4, 2015
    Posts:
    456
    @daschatten

    This option has already been added to the feature requests board and is in the research tab at https://trello.com/c/9UEFhUAR

    We'll add this option as soon as we get to it. There are other options with a larger impact that need to be handled first.
     
    daschatten likes this.
  19. allemaar

    allemaar

    Joined:
    Mar 4, 2015
    Posts:
    456
    @daschatten

    Can you please elaborate what you mean with an inverse toggle on connections?
    You can move in any direction (forward and back) between nodes as long as you connect their input and output connections and the output conditions are met.
     
  20. daschatten

    daschatten

    Joined:
    Jul 16, 2015
    Posts:
    124
    Something like: If an uiview moves in from left by default the reverse (or better mirror?) should make it move in from right. Example carousel: https://getbootstrap.com/docs/4.0/components/carousel/
     
  21. Dr-Persona

    Dr-Persona

    Joined:
    Mar 19, 2014
    Posts:
    2
    Is the data binding solution now available?