Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

Daikon Forge GUI Library

Discussion in 'Assets and Asset Store' started by TakuanDaikon, Aug 6, 2013.

  1. TakuanDaikon

    TakuanDaikon

    Joined:
    Jun 6, 2010
    Posts:
    268
    Daikon Forge is proud to announce our user interface plugin for Unity3D - The Daikon Forge UI Library (DF-GUI).

    DF-GUI delivers the very best in productivity, flexibility, power, and efficiency:

    • Efficient: Atlased UI textures mean your entire UI can be drawn in just one draw call, even with multiple panels.
    • Pixel Perfect: Pixel-perfect rendering allows your UI to look crisp across all resolutions. Plus, pixel-constrained placement means your controls never look “fuzzy” even while moving.
    • Indie-friendly: DF-GUI works flawlessly with a Unity Indie license, as well as Unity Pro.
    • WYSIWYG: No need to hit Play, what you see at design time is exactly what you get at runtime.
    • Built-in Data Binding: DF-GUI features powerful data and event binding. Bind the properties of disparate components, or bind methods of one component to fire on the event of another component, with absolutely no coding required. Easily separate your user interface logic from your game code.
    • Powerful Event System: DF-GUI utilizes a powerful, well-designed event system. All controls raise a wide variety of events as well as allowing for a flexible signaling mechanism for handling events in other scripts. In addition, event bubbling gives you flexibility in where in the control tree you wish to observe the events.
    • Unified Input: DF-GUI ties together all manner of disparate input methods, from mouse, to keyboard, to gamepad. They all work together seamlessly, and unified focus tracking means that you don’t have to choose only one input method.
    • Fully-featured Text Input: The fully-featured Textbox control adds a variety of capabilities few of the competitors can claim: move the caret, select text, and even copy/paste on some platforms - it feels just like a traditional desktop text field and works in a way that is familiar to almost every computer user.
    • Anchored Layout System: Extensive support for anchors in DF-GUI allow you to control the layout the way you want, at any size. Allows for everything from screen resolution changes, to easy resizable windows and more, with no custom logic necessary.
    • Easy Tweening: DF-GUI includes a basic but still very powerful and easy to use Tween system. Tween a wide variety of property types on any component of your choosing (it doesn’t even have to be a widget). You can even use tweens with Event Binding!
    • Designer Centric: First-class design-time support with custom context menus, helpful design-time gizmos, and extensive editor integration all combine to enhance productivity and allow you to focus on your UI instead of the tools. Center controls, dock them, evenly space them, add new ones, and more - all just a right-click away.

    Please take the time to view some of the online samples on our website at: http://www.daikonforge.com/dfgui/examples/

    You can also check out some tutorial videos to help get you started at:
    http://www.daikonforge.com/dfgui/tutorials/

    Current status: NOW AVAILABLE ON THE ASSET STORE
     
    Last edited: Mar 9, 2014
  2. VicToMeyeZR

    VicToMeyeZR

    Joined:
    Jun 3, 2012
    Posts:
    427
    impressive... Whats your price at?
     
  3. TakuanDaikon

    TakuanDaikon

    Joined:
    Jun 6, 2010
    Posts:
    268
    We're hoping to sell it at the $75 price, which includes the full source code. Please feel free to visit the website and download the free version and have a look around, we'd love to get some feedback from folks who haven't been living and breathing and working with this library for a long time now :)
     
  4. VicToMeyeZR

    VicToMeyeZR

    Joined:
    Jun 3, 2012
    Posts:
    427
    Great price. Yes I will trial it. Thanks
     
  5. Sehlor

    Sehlor

    Joined:
    Feb 10, 2012
    Posts:
    199
    And price will be? :)

    Sorry, didn't see 75$ :)

    BTW, i downloaded evaluation version, it comes as a zip how can i import the package?
     
    Last edited: Aug 6, 2013
  6. TakuanDaikon

    TakuanDaikon

    Joined:
    Jun 6, 2010
    Posts:
    268
    Sorry, the website wouldn't let me upload just a .unitypackage file for "security reasons". Just unzip the archive file and the .unitypackage will be inside.

    .
     
  7. Sehlor

    Sehlor

    Joined:
    Feb 10, 2012
    Posts:
    199
    I took a quick look, you share the complete source :( Remove it as soon as possible in my opinion :)

    Code (csharp):
    1. // *******************************************************
    2. // Copyright 2013 Daikon Forge, all rights reserved under
    3. // US Copyright Law and international treaties
    4. // *******************************************************
    5. using UnityEngine;
    6. using UnityEditor;
    7.  
    8. using System;
    9. using System.IO;
    10. using System.Text;
    11. using System.Text.RegularExpressions;
    12. using System.Linq;
    13. using System.Reflection;
    14. using System.Collections;
    15. using System.Collections.Generic;
    16.  
    17. using Object = UnityEngine.Object;
    18.  
    19. [CustomEditor( typeof( dfTabstrip ) )]
    20. public class TabstripInspector : ControlInspector
    21. {
    22.  
    23.     private static Dictionary<int, bool> foldouts = new Dictionary<int, bool>();
    24.  
    25.     protected override bool OnCustomInspector()
    26.     {
    27.  
    28.         DFEditorUtil.DrawSeparator();
    29.  
    30.         if( !isFoldoutExpanded( foldouts, "Tab Strip Properties", true ) )
    31.             return false;
    32.  
    33.         var control = target as dfTabstrip;
    34.         if( control == null )
    35.             return false;
    36.  
    37.         EditorGUIUtility.LookLikeControls( 110f );
    38.         EditorGUI.indentLevel += 1;
    39.  
    40.         GUILayout.Label( "Appearance", "HeaderLabel" );
    41.         {
    42.  
    43.             SelectTextureAtlas( "Atlas", control, "Atlas", false, false );
    44.             if( control.GUIManager != null  !dfAtlas.Equals( control.Atlas, control.GUIManager.DefaultAtlas ) )
    45.             {
    46.                 EditorGUILayout.HelpBox( "This control does not use the same Texture Atlas as the View, which will result in an additional draw call.", MessageType.Info );
    47.             }
    48.  
    49.             SelectSprite( "Background", control.Atlas, control, "BackgroundSprite", false );
    50.  
    51.             var flowPadding = EditPadding( "Tab Padding", control.LayoutPadding );
    52.             if( !RectOffset.Equals( flowPadding, control.LayoutPadding ) )
    53.             {
    54.                 DFEditorUtil.MarkUndo( control, "Change Layout Padding" );
    55.                 control.LayoutPadding = flowPadding;
    56.             }
    57.  
    58.         }
    59.  
    60.         GUILayout.Label( "Behavior", "HeaderLabel" );
    61.         {
    62.  
    63.             var tabCount = control.Controls.Count;
    64.             var selectedIndex = EditorGUILayout.IntSlider( "Selected Tab", control.SelectedIndex, 0, tabCount - 1 );
    65.             if( selectedIndex != control.SelectedIndex )
    66.             {
    67.                 DFEditorUtil.MarkUndo( control, "Change Selected Tab" );
    68.                 control.SelectedIndex = selectedIndex;
    69.             }
    70.  
    71.             var pageContainer = EditorGUILayout.ObjectField( "Tab Pages", control.TabPages, typeof( dfTabContainer ), true ) as dfTabContainer;
    72.             if( pageContainer != control.TabPages )
    73.             {
    74.                 DFEditorUtil.MarkUndo( control, "Set Page Container" );
    75.                 control.TabPages = pageContainer;
    76.             }
    77.  
    78.             if( GUILayout.Button( "Add Tab" ) )
    79.             {
    80.                 DFEditorUtil.MarkUndo( control, "Add Tab" );
    81.                 Selection.activeGameObject = control.AddTab().gameObject;
    82.                 control.SelectedIndex = int.MaxValue;
    83.             }
    84.  
    85.         }
    86.  
    87.         return true;
    88.  
    89.     }
    90.  
    91.     protected override void FillContextMenu( List<ContextMenuItem> menu )
    92.     {
    93.  
    94.         if( Selection.gameObjects.Length == 1 )
    95.         {
    96.  
    97.             menu.Add( new ContextMenuItem()
    98.             {
    99.                 MenuText = "Add Tab",
    100.                 Handler = ( control ) =>
    101.                 {
    102.                     DFEditorUtil.MarkUndo( control, "Add Tab" );
    103.                     var tabStrip = control as dfTabstrip;
    104.                     Selection.activeGameObject = tabStrip.AddTab().gameObject;
    105.                     tabStrip.SelectedIndex = int.MaxValue;
    106.                 }
    107.             } );
    108.  
    109.         }
    110.  
    111.         base.FillContextMenu( menu );
    112.  
    113.     }
    114.  
    115. }
    116.  
     
  8. TakuanDaikon

    TakuanDaikon

    Joined:
    Jun 6, 2010
    Posts:
    268
    I appreciate your concern, but in fact the free package is intended to contain some source, just not the FULL source. Specifically, it does contain the source for most of the controls inspectors, the source for the Tween components, and some other things.

    The core code for the library is compiled into a .DLL in the free version, which you will see under Assets/Daikon Forge/Plugins/DF-GUI.Evaluation.dll

    Thanks again for looking out for us, though :)
     
  9. Sehlor

    Sehlor

    Joined:
    Feb 10, 2012
    Posts:
    199
    Ok but still,

    .zip extracting bunch of folders with md5 hashes :)

    Edit: Default Unarchiver in Mac Os sucks. Sorry to bother. Used another one and got the unitypackage.

    I'm on it now :)
     

    Attached Files:

    Last edited: Aug 6, 2013
  10. Nezabyte

    Nezabyte

    Joined:
    Aug 21, 2012
    Posts:
    110
    Very cool, really excited to check this out. Was really impressed with the site - tutorials, examples, and documentation - what more could a developer ask for?. Couldn't say no to the early adopter special, thanks! :) Might be replacing NGUI in our projects if it turns out to be as awesome as it looks.
     
  11. TakuanDaikon

    TakuanDaikon

    Joined:
    Jun 6, 2010
    Posts:
    268
    I am very happy to hear that! If I can be of any assistance in that transition, please let me know :)
     
  12. crafTDev

    crafTDev

    Joined:
    Nov 5, 2008
    Posts:
    1,820
    It's probably time to upgrade from EZGUI. The only question I have is about atlasing. Does the put my sprites in atlases or do I have to already have atlas pre made?
     
  13. PhobicGunner

    PhobicGunner

    Joined:
    Jun 28, 2011
    Posts:
    1,813
    Hello.
    DF-GUI includes an atlas building mechanism. This is covered in Tutorial 1 here: http://www.daikonforge.com/dfgui/tutorials/basic-controls/
    To initially create the texture atlas, select all of your UI textures and from the top menu bar choose Daikon Forge | User Interface | Create Texture Atlas and pick where to save the atlas prefab and material to. It will automatically pack your textures into one atlas as efficiently as possible.
    After the atlas is created, you can also update existing textures or add new ones by selecting the atlas prefab, and dragging the new/existing texture onto the Add Sprite texture slot.
     
  14. Nezabyte

    Nezabyte

    Joined:
    Aug 21, 2012
    Posts:
    110
    Imported the package and started watching the first tutorial video. Thanks for explaining the reasoning behind configuring Unity for use with the tool and moving at a good pace. Can we expect to see more tutorials and examples added actively, or as specific requests from us? These will definitely speed up the process of learning to use the tool.
     
  15. Brainswitch

    Brainswitch

    Joined:
    Apr 24, 2013
    Posts:
    270
    This does sound a lot like our in-house GUI system (ours also has very useful data-binding and powerful events, and WYSIWYG plus other similarities), except... well, more complete :)

    Will definitely check it out.
     
  16. TakuanDaikon

    TakuanDaikon

    Joined:
    Jun 6, 2010
    Posts:
    268
    We definitely do have plans for more tutorials and examples, we just haven't yet had time to do them all.

    If there's anything in particular you'd like to see, please feel free to suggest it. We absolutely want to make sure that we cover what's important to the users, whether that means covering a broad topic or a specific request.

    We are also working on finalizing the next release, which will include some workflow and feature enhancements and a few more built-in controls. Development is definitely active, and our sincere hope is that we will be able to focus on this exclusively soon :)
     
  17. TakuanDaikon

    TakuanDaikon

    Joined:
    Jun 6, 2010
    Posts:
    268
    I'm not surprised that there are similarities, since those are such useful features and in fact DF-GUI also started out as an in-house GUI system for a different project altogether. We wanted to be able to code our UI in the way that we were more familiar with after having been web and desktop developers for so long, and were actually surprised at the limited range of available options.

    Please do check it out, I'd love to hear your thoughts and get your feedback.
     
    Last edited: Aug 6, 2013
  18. Sehlor

    Sehlor

    Joined:
    Feb 10, 2012
    Posts:
    199
    Been playing it for 5 hours now,

    I love what i saw.

    A suggestion; Make HUD Controls, make them available to attach a 3D game object and Setup alignment (Top, TopCenter, TopLeft etc.)

    Great Work, will definitely buy it!
     
  19. PhobicGunner

    PhobicGunner

    Joined:
    Jun 28, 2011
    Posts:
    1,813
    If you could please clarify what you mean, I think I can explain what you are trying to accomplish.
     
  20. crafTDev

    crafTDev

    Joined:
    Nov 5, 2008
    Posts:
    1,820
    I forgot to ask, can this make animated buttons?
     
  21. Sehlor

    Sehlor

    Joined:
    Feb 10, 2012
    Posts:
    199
  22. TakuanDaikon

    TakuanDaikon

    Joined:
    Jun 6, 2010
    Posts:
    268
    Depends on what you mean by animated, I guess. If you mean animated in the sense of moving, resizing, etc., then yes there's already support for that.

    If, on the other hand, you mean animated more in the sense of an animated .gif image where you set up frames and it shows them based on a timeline like a movie, then there's no current support for that. That's one of the components that unfortunately got cut due to time constraints. If that's something that's important to you, then please let me know as I've already gotten that component mostly done and it shouldn't take much to finish it I just have to prioritize what I'm working on :)
     
  23. TakuanDaikon

    TakuanDaikon

    Joined:
    Jun 6, 2010
    Posts:
    268
    Ah, okay... That is a good suggestion. I've already played around with that kind of concept, and it's obviously useful. It could certainly be done using the library but there's currently not a built-in component to do all of that. Perhaps I'll be able to get something like that into an update in the near future.

    I think I'll try to work up an example for that as soon as I can (as time permits), I can see why you are interested.
     
  24. Sehlor

    Sehlor

    Joined:
    Feb 10, 2012
    Posts:
    199
    I already done that this morning using Label Control, attached the Follow Player script and used an empty gameobject above the player. (it was a little buggy :p )

    But having that kind of Component will definetly make things better :)

    BTW i just saw Buy link at your website and couldn't resist but clicking it, got the EARLYADOPTER thingy and i hope i can get all updates? :)
     
    Last edited: Aug 6, 2013
  25. TakuanDaikon

    TakuanDaikon

    Joined:
    Jun 6, 2010
    Posts:
    268
    Yes, you will get all updates free for life :)
     
  26. Sehlor

    Sehlor

    Joined:
    Feb 10, 2012
    Posts:
    199
    You are the best!

    So it settled then, all of my games using Daikon from now on!

    Ima implementing my UI to Daikon now, expect screenshots soon! :)
     
  27. Play_Edu

    Play_Edu

    Joined:
    Jun 10, 2012
    Posts:
    722
    Great work man.
     
  28. TakuanDaikon

    TakuanDaikon

    Joined:
    Jun 6, 2010
    Posts:
    268
    Thank you very much, I appreciate that. Have you tried it out yet?
     
  29. TakuanDaikon

    TakuanDaikon

    Joined:
    Jun 6, 2010
    Posts:
    268
    As I mentioned above it's easy enough to code that yourself from the existing components, but the next update will contain that functionality built-in.

    Here's a link to a live demo (early preview) of that functionality: http://www.daikonforge.com/dfgui/examples/animated-sprites/
     
  30. crafTDev

    crafTDev

    Joined:
    Nov 5, 2008
    Posts:
    1,820
    Yes, sprite animations.
    As soon as this update goes live, I will purchase. Also would love to see a video demo of how this is done in DFGUI.

    jrDev
     
  31. TakuanDaikon

    TakuanDaikon

    Joined:
    Jun 6, 2010
    Posts:
    268
    It's kinda hectic around here, but I will try to get one made as soon as I can :)
     
  32. Nezabyte

    Nezabyte

    Joined:
    Aug 21, 2012
    Posts:
    110
    I tried to join your forums but got a 404 error with the "Register" button (after putting in my name and email).
     
  33. Nezabyte

    Nezabyte

    Joined:
    Aug 21, 2012
    Posts:
    110
  34. TakuanDaikon

    TakuanDaikon

    Joined:
    Jun 6, 2010
    Posts:
    268
    Hmmm... I tried to duplicate that by registering a new a user and didn't experience that problem. Masaaki did the same thing from another machine with no issues. I looked in the user list and don't see a record for you, so I know that it didn't 404 after creating the account.

    I will look into it and see if I can figure out why that happened to you, but at the moment I just don't know. I apologize for that.
     
  35. sefou

    sefou

    Joined:
    Aug 30, 2011
    Posts:
    287
    same problem for me.
     
  36. TakuanDaikon

    TakuanDaikon

    Joined:
    Jun 6, 2010
    Posts:
    268
    Well crap... Okay, I'll continue looking into it. Really not sure why it would do that. How frustrating.
     
  37. TakuanDaikon

    TakuanDaikon

    Joined:
    Jun 6, 2010
    Posts:
    268
    I've searched far and wide for a possible cause, and did find a few sites that mentioned possible solutions. I did try to implement a few of their suggestions, but without being able to reproduce the issue I don't know whether doing so has resulted in a fix or not. I hope it works now :)
     
  38. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,087
    I am not able to download the evaluation as well: 404 error code.

    I must say that the features look very complete and interesting, but I really have to ask what is that makes this possibly better than nGUI in your opinion? I honestly asking out of curiosity and not a jerk question if you know what i mean :)

    Please fix the evaluation link when you can.

    Good job!
     
  39. sefou

    sefou

    Joined:
    Aug 30, 2011
    Posts:
    287
    error 404 register persist. Anyway , i bought your plug and i'm very happy. ;)
     
  40. TakuanDaikon

    TakuanDaikon

    Joined:
    Jun 6, 2010
    Posts:
    268
    I am very disappointed with these website problems. My web host appears to be having some difficulty at the moment with the administration control panel, so although I did think of another thing to try I cannot do so at this point.

    I have been trying to use a download tracker to allow me to gauge the level of interest, which at this point appears to be pretty strong and obviously many people are not having any difficulties, but I am disappointed that it's not working for everyone and have to wonder if I'm getting an accurate picture if not everyone can download it. I will try to resolve this issue as soon as I can.

    @nuverian - I sent you a direct download link via PM. As for your question about a comparison I will certainly answer that in some detail soon, but I just happened to wake up in the middle of the night and while grabbing a glass of water I noticed your question. It's a good question and worthy of a better response than I can muster up at 3:00am :)

    If anyone else would like a direct download link while I'm working on the website issue please let me know. Hopefully I'll be able to resolve this annoying 404 issue so that I can get a better picture of community interest, but if this goes on much longer I'll just post it publicly.

    @sefou - I am extremely pleased to hear that! :D


    [EDITED TO ADD] I think I might have just resolved the forum registration issue at least. Thank goodness for remote desktop and having the ability to try from another machine at a remote location! I was finally able to reproduce the issue, and hopefully it is resolved now.
     
    Last edited: Aug 9, 2013
  41. Sehlor

    Sehlor

    Joined:
    Feb 10, 2012
    Posts:
    199
    Hello,

    I'm implementing my GUI but here is a problem;

    When i want my player's health/mana/stamina bar to TopLeft i drag them to top left but, when i press play it always behaviouring strange, sometimes it anchors sometimes it goes to 0,0 relative to 960, 720.

    And last, after 5 mins its shows the logo even i bought to full version :(
     
  42. TakuanDaikon

    TakuanDaikon

    Joined:
    Jun 6, 2010
    Posts:
    268
    As I mentioned via email and the support forums, I sent you an update. I apologize for that, it should be resolved. How embarrassing.

    Can you give me more information about the health/mana/stamina bars? When I drag any control to the top left corner and set the Anchors to [Top,Left] it always works for me, even when I resize the window in the standalone player or change resolutions. Perhaps post more information in the support forum?
     
  43. kellygravelyn

    kellygravelyn

    Joined:
    Jan 22, 2009
    Posts:
    143
    GUI looks pretty nice, especially the game menu demo. I went to try it out but your free version fails to load the page for me. Getting an ERR_FILE_NOT_FOUND in Chrome.
     
  44. Sehlor

    Sehlor

    Joined:
    Feb 10, 2012
    Posts:
    199
    Hours of struggling, bug reporting and at least i got my Character Portrait window get to work using Daikon GUI (Uses Property Bindings between bars labels two way ;) )

    Anyone can suggest me font size please? (8px scale up or 32px scale down?) they seem to difficult to read a bit :)

    [Right Click and Open Image In A New Tab to show full res]

    $Screen Shot 2013-08-09 at 19.07.54.jpg
     
  45. TakuanDaikon

    TakuanDaikon

    Joined:
    Jun 6, 2010
    Posts:
    268
    Bitmapped fonts always look better when not scaled, unfortunately:

    $font-size-and-scaling.png
    (Right-click and View Image to view image at its original size)

    There are a few things I would try: First, I would try generating a font at exactly the size you need for the HUD bars. I know that texture atlas space is at a premium and you cannot fill it with too many fonts, but for a 12px font containing only the characters you need for a HUD you can use 128x128 or even less. It will probably look better than any other sized font scaled down. Also, when displaying very small text, sometimes using semi-bold can increase readability without looking too fat. Lastly, and I know this is going to sound strange to some, try generating the bitmapped font image in a different program. I get vastly different final quality between BMFont and Hiero, for instance. Mac users are lucky to have even more options available.

    For what it's worth, I'm currently working on a way to use Unity's built-in FreeType engine for labels, which should help with issues like this.
     
    Last edited: Aug 9, 2013
  46. kellygravelyn

    kellygravelyn

    Joined:
    Jan 22, 2009
    Posts:
    143
    If you can nail that, it'd be a killer feature. Dealing with bitmap fonts is probably the most annoying part of any existing UI library, especially with the lack of quality tools on Windows. I look forward to seeing what you find. :D
     
  47. PhobicGunner

    PhobicGunner

    Joined:
    Jun 28, 2011
    Posts:
    1,813
    Scaling up and down isn't good for bitmap fonts (this is the case in NGUI as well). When they aren't scaled, they are able to map perfectly to screen pixels which allows them to look crisp. However, when they are scaled, they do not map perfectly, generally causing the font to look fuzzy/blurry (and for smaller text, this fuzziness can make the font unreadable)
    So you'll want to export your font at each size you will need for maximum sharpness and readability.
     
  48. Nezabyte

    Nezabyte

    Joined:
    Aug 21, 2012
    Posts:
    110
    Cool, it works now.
     
  49. Nezabyte

    Nezabyte

    Joined:
    Aug 21, 2012
    Posts:
    110
    Could I get this update as well? Trying to place some GUI elements in the upper-left corner.

    Also, couple questions/requests:

    1) Would it be possible to have automatic conversion for data bindings? for example having int source to text string target without having to cast first.

    2) Can you bind to collections?

    3) Can you have multi-level bindings? Right now we have data bindings to properties within non-monobehavior classes, which are themselves initialized through a persistent (does not unload between scenes) monobehavior script.

    4) Can you vertically align text within a button? so that even if the button is large, the text will still be vertically aligned in the center.
     
    Last edited: Aug 10, 2013
  50. PhobicGunner

    PhobicGunner

    Joined:
    Jun 28, 2011
    Posts:
    1,813
    1) At the moment, data binding cannot be done between different kinds of properties (ints and strings, for instance).
    I would probably write an intermediate component for this. You property bind an int property on this component, and then a matching string property has a getter that simply returns the int property cast to a string.

    2) I just tested this, and collections aren't supported. You can bind them, but the results are pretty buggy. I will see if this can be fixed.

    3) As long as the property binding component persists through the scene load, it should continue to be bound.

    4) Right now buttons do not have vertical text alignment. You can use Padding to center the text, however.