Search Unity

InstantGUI - a GUI display system and GUI editor

Discussion in 'Assets and Asset Store' started by Wright, Dec 18, 2013.

  1. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,276
    $heading_small.jpg
    InstantGUI allows to create interface system for the game with maximum convenience and as fast as prototyping it!
    • GUI creation is done with no scripting. Now an artist or game designer can create interface the way they like. Of course there a script interactions with GUI which are done with events (messaging) and direct get/set element parameters.
    • No special additional cameras, scene planes, gizmos and helpers. InstantGUI forms a simple and logical hierarchy of elements – and only elements – under one root object.
    • All the work is done directly in a Game view. No need to place elements in a Scene view looking at result in a Game view – like in other GUI plugins. Game view is your only canvas!
    • What You See Is What You Get: your in-game interface will look and act directly as you see it in on your canvas.
    • InstantGUI comes with demo GUI themes that has graphics for all basic interface elements. Feel free to use theme for demo purposes, prototyping or in a final product.

    You can download evaluation version to to get an idea of what is it. Evaluation version has the following limitations:
    - it cannot be used in a final product. If you like InstantGUI please consider purchasing it. )
    - it does not support your own style creation. Evaluation version visual appearance is limited to "Glow" style only.

    Tutorial

    Evaluation version

    Asset Store Link
     
    Last edited: Dec 19, 2013
  2. BuildABurgerBurg

    BuildABurgerBurg

    Joined:
    Nov 5, 2012
    Posts:
    566
    Very interesting indeed :)

    The first thing I thought when I saw the new gui thread was "oh no, not another GUI system" but after watching your video I can see that this is the way I want to create my UI. You kind of read my mind :)

    Now I'm thinking if I could use this for complex UI. My UI is very dynamic. The UI I'm trying to create will change depend on the weapon + the type of missile that is in that weapon. For example: I might have a missile that is a simple fire and forget, or one that has detonation timer on it. The ui would display different options.

    Do you think your system will work with this sort of thing?
     
  3. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,276
    It's all the matter of enabling and disabling game objects with UI. You should have prepared controls for different rockets - GUI element for detonator rocket, GUI element for fire and forget rocket, etc. If a rocket with detonation timer is equipped than a detonator GUI element should be enabled.

    You can make a script that watches equipped weapon and enables and disables GUI elements, or you can enable or disable elements on equipping.

    You can try the demo to find out if such a system suits you.
     
  4. Lypheus

    Lypheus

    Joined:
    Apr 16, 2010
    Posts:
    664
    Do you have a link to a web based demo or any youtube videos showing how this is used/works?
     
  5. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,276
  6. pushingpandas

    pushingpandas

    Joined:
    Jan 12, 2013
    Posts:
    1,419
    This is awesome! How can we create own stylesheets?
     
  7. TokyoDan

    TokyoDan

    Joined:
    Jun 16, 2012
    Posts:
    1,080
    Where is the evaluation version?
    I can't find it anywhere.
     
  8. Lypheus

    Lypheus

    Joined:
    Apr 16, 2010
    Posts:
    664
    Finally, someone writes what appears to be a slick gui framework :) - purchased, will give it a try tonight/tomorrow.
     
  9. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,276
    Devision4, to create a style set right-click on a folder where style set should be placed, select Create -> InstantGui style set. Like any other asset, actually )

    TokyoDan, I've made a separate link for evaluation version in first post. Sometimes in-text links are not highlighted, don't know why.
     
  10. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,276
    I'm pleased to report that new version 1.04 is now on asset store. It brings minor bug fixes and more stable work. Thanks Christopher Lambert and Michael Bocs for finding out bugsl
     
  11. BjornL

    BjornL

    Joined:
    Jul 4, 2012
    Posts:
    2
    Hi!

    Thanks for an excellent plugin! Just got it yesterday and I'm really happy with it. It is really easy to use and you can get menus/huds up and running very fast.

    The only thing that could make it even faster for prototyping would be if there was a psd template included with the basic components sliced and named ready to draw and export. Might just create one myself :p

    Keep up the good work!
     
  12. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,276
    BjornL, thanks! Such a feedbacks inspire me on plugin further development! )
    Glow Style Source with slices - enjoy!
     
  13. jeldrez

    jeldrez

    Joined:
    Dec 3, 2012
    Posts:
    14
    It looks really nice, I'm only concert about the transitions between screens.
    If it works just enable/disable windows, there's time for an animation between them before turning off?
     
  14. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,276
    I have not thought about smooth enabling and disabling elements. Right now they appear and disappear instantly. But this should not be hard to implement, and most probably I'll do it in next version.
     
  15. Danirey

    Danirey

    Joined:
    Apr 3, 2013
    Posts:
    548
    Hi, It looks fantastic! I've one question. Is it possible to make a tutorial of how to add the behaviors to de buttons, sliders etc? It would be awesome to see the complete workflow for a basic action. And it will help people to choose this gui interface!

    Cheers!

    (edit)
    I've downloaded the evaluation version and reports this error.

    Assets/InstantGuiEvaluation.zip Folder/Scripts/InstantGuiFrame.cs(48,22): error CS0117: `UnityEditor.Undo' does not contain a definition for `RecordObject'

    am i doing something wrong? i simply drop the folder into assets. If i move it to the plugins folder it reports more errors!
     
    Last edited: Jan 23, 2014
  16. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,276
    Danirey, what is you Unity version? InstantGUI requires 4.3.1 or higher.

    Special settings for elements are simple and intuitive, so I thought that they do not require separate tutorials. But but of course on my side everything cannot be in sight. I'll think about series of short tutorials, each will be dedicated to on of the elements.
     
    Last edited: Jan 23, 2014
  17. seansteezy

    seansteezy

    Joined:
    Nov 28, 2013
    Posts:
    122
    Hey Denis, I am coming across a functional error when using the popup menu element. When trying to use it with the scroll bar, hitting the scroll bar instantly closes the popup. I can't select anything! I edited some code in the InstantGUIPopup.cs line 41 (set false to true), and it keeps it open now but won't close it once I make a selection. Could you please take a look for me and let me know what might be causing this issue. Thanks!

    I'm having a blast prototyping with your InstantGUI just can't figure out why it won't scroll my long drop down :) Other than that it is totally awesome and worth every penny.

    I am using Unity 4.3.2
     
  18. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,276
    seansteezy, thanks for the nice feedback! I've fixed the bug, it will be included in next version. A quick fix is available here.
     
  19. seansteezy

    seansteezy

    Joined:
    Nov 28, 2013
    Posts:
    122
    Awesome! Thank you so much! InstantGUI really is easy to use and fast, so for that, I thank you.

    I would also be interested in a little tutorial or something that shows how to send and receive events from the GUI, like on the popup, if I select one of the options, how do I tell my game/app to do something? I know the button has an event message built in which is awesome, but I am kind of an amateur.

    Thanks for your quick help on my issue! Looking forward to your updates.
     
  20. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,276
    There are two ways to get element parameter changes: the first one is send message events, and the second - getting changes by comparing current parameter value with the old one:

    Code (csharp):
    1. public class Test : MonoBehaviour
    2. {
    3.    InstantGuiPopup popup;
    4.    int oldSelected = 0;
    5.  
    6.    void Update()
    7.    {
    8.       if (popup==null) popup = GetComponent(InstantGuiPopup);
    9.       if (popup.selected != oldSelected)
    10.       {
    11.          //do some action
    12.          oldSelected = popup.selected;
    13.       }
    14.    }
    15. }
    This is a nice way, even a bit faster then message and it can get access to all public variables, but, as you can see, it requires a bit of coding.
     
  21. GlitchedPolygons

    GlitchedPolygons

    Joined:
    Jun 18, 2013
    Posts:
    210
    looks very interesting :eek:
     
  22. seansteezy

    seansteezy

    Joined:
    Nov 28, 2013
    Posts:
    122
    Thank you so much! I'll check this out and see what I can do. I'm more of a designer myself, so this tool has saved me like 1000 hours already.

    I think a cool feature for future updates would be to include menu sounds for opening/closing popups and button clicks. I am adding them myself but it would be nice to just drop some sounds in when you set them up. Just a thought.

    Still this is the best GUI system for fast prototyping I have ever used. Thanks again!
     
  23. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,276
    Yeah, I'm already implementing sounds. In next version every substyle (default, pointed, activated and disabled) will have a sound property. It will be played on substyle activation.

    Btw why are you using InstantGUI just for prototyping? Do you plan to use it in final product?
     
  24. john-essy

    john-essy

    Joined:
    Apr 17, 2011
    Posts:
    464
    What about drawcalls? is it one per gui object? or..?
     
  25. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,276
    InstantGUI uses GUITexture and GUIText internally. GUITextures do not batch. GUIText batches all of text symbols in one mesh, but these meshes are separate for different elements.
     
  26. ValrikRobot

    ValrikRobot

    Joined:
    Jun 26, 2013
    Posts:
    206
    This has the best GUI system out there. For simplicity and quality combined. I knew it was a good solution when I began using it. But after a very short time, HUGE benefits and time savers.

    Anyone needing a very quick, effective, in depth and smooth GUI, needs this in their lives.

    Cheers!!
     
  27. TokyoDan

    TokyoDan

    Joined:
    Jun 16, 2012
    Posts:
    1,080
    Thanks.
     
  28. thienhaflash

    thienhaflash

    Joined:
    Jun 16, 2012
    Posts:
    513
    Very cool, indeed, but still need a better design (somewhat like DaikonForge's UI would be good) and how can we create styles ? Does this GUI support shortcuts ? XML - driven ?
     
  29. ValrikRobot

    ValrikRobot

    Joined:
    Jun 26, 2013
    Posts:
    206
    Actually some advice on creating styles would be very useful.
     
  30. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,276
    Thanks, such a feedbacks sound inspiring!

    So I see the weak point - is the style setup interface. I'll look how I can simplify it, and make a couple tutorials.

    Briefly: styles are created by pressing right mouse button in project view on a folder where style set should be created, and "Create -> InstantGUI Style Set" should be selected. A style set contains a list of different styles: for window, button, etc. To add a new style to style set press "Add" button. To make your style assigned to element automaticly it should be properly named (like "Window" or "Button" - you can use GlowStyleSet as a name reference). A style has 4 groups of properties that depends on element state: main, pointed, active and disabled. If an element should not have any of this states just leave corresponding section disabled. Moreover style has common parameters which are used by every element's state like font and texture borders. I must admit that here is quite a lot of these parameters, but they give a possibility to tune an element in different ways.

    InstantGUI saves all the data in scene and style asset file. There was no need to work with XML, but if you'll say what xml function do you need I can consider implementing them. Guess it should be saving GUI to XML and loading it.

    Shourtcuts could be made with a button element, but they could not be moved for now. As a further development of the plugin I see implementing of drag-and-drop elements such as inventory items and the abovementioned shortcuts.
     
    Last edited: Feb 18, 2014
  31. ValrikRobot

    ValrikRobot

    Joined:
    Jun 26, 2013
    Posts:
    206
    For me the style setup interface is ok. It just needs a good explanation of what is what really. a simple tutorial video would do the trick I recon
     
  32. BrightBit

    BrightBit

    Joined:
    Jan 22, 2013
    Posts:
    265
    Hi,

    Does this framework support Bitmap Fonts and are the widgets placed pixelperfect?


    Cheers
    BrightBit
     
  33. kilik128

    kilik128

    Joined:
    Jul 15, 2013
    Posts:
    909
    look too good for be real ! so what's the luck i miss somethink's

    he get autoresize for mobile ?
    guistyle is unique to this asset ?
    it's not the basic unity gui
     
  34. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,276
    BrightBit, InstantGUI uses GUIText internally. According to this GUIText can use bitmap font, so can the InstantGUI.

    All the elements are always placed pixel-perfect, no matter of their relative and offset positions.

    kilik128, thanks. InstantGUI can get the changed screen resolution and and place all of the elements according to it. To make it clear: it does not "scale" all of your interface proportionally with texts, fonts, etc., but changes element's placement and size like if you are resizing your browser window.

    InstantGUI StyleSet has nothing in common with Unity's GUIStyle.

    The fact is that Unity has more than one basic gui. InstantGUI is a wrapper for the most basic one - GUIText and GUITexture. However, it does not use OnGUI() function (only exception is for interface editor), does not re-builds gui every frame, and does not require scripting to be displayed.
     
  35. ValrikRobot

    ValrikRobot

    Joined:
    Jun 26, 2013
    Posts:
    206
    Just started putting a more official gui together. Using the options on the buttons, it is so quick and easy to switch between windows. And being able to enable / disable objects when a button is clicked means my startup screen can load with the main scene and I can turn on all the game objects for the game when play is pressed. Play is only visible once a player is logged in which I can set via script. Awesome

    $MENU.jpg
     
  36. ValrikRobot

    ValrikRobot

    Joined:
    Jun 26, 2013
    Posts:
    206
    I've been using InstantGUI not only for menu's, but to set up my HUD display. Gives an excellent, dynamic GUI system. I made the bottom part of the hud, and then decided I wanted it to minimize. A few minutes later I had it minimising by turning off the maximised hud and turning on the minimised. The minimised is actually a button, with then reverses the process. Easy stuff

    $InGameHUD.jpg

    The game characters and level is just a demo scene, it is not a part of my game
     
  37. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,276
    ValrikRobot, your GUI looks great. Really classy, and color scheme is so stylish! I'm glad to see InstantGUI could be useful for something like that.
     
  38. ValrikRobot

    ValrikRobot

    Joined:
    Jun 26, 2013
    Posts:
    206
    Thank you im glad you like it.

    Your kit is so quick and easy it makes building and testing this so fast.

    By the way, whats your connection with voxeland?
     
  39. Thromshall

    Thromshall

    Joined:
    Oct 9, 2012
    Posts:
    12
    I downloaded the Evaluation version and it has every control that I need for my game, except for scrolling elements (like scrollable windows). I noticed that if I make an element, like a button, a child of a window and move it out of the bounds of the window it displays. Would be pretty nice if windows would scroll to that element in that case.

    Without that functionality I cannot bring myself to purchase this GUI system, as a huge part of my game has dynamically filling button lists that need to scroll. I was really looking forward to using this because it was so easy to use, the price was great, and Unity's GUI system is god awful.

    If this functionality exists and I'm a big derp please let me know. I am looking for a relatively inexpensive GUI option that is flexible and isn't a pain.
     
  40. Muber Gaming

    Muber Gaming

    Joined:
    Jan 24, 2014
    Posts:
    48
    Nice to see other gui editor alternative,

    my review of the eval version:
    pros;
    easy to use , very intuitive and simple.

    cons:
    while one looks for gui editor alternatives to run away from unity default stock OnGUI poor performance,
    1- i notice InstantGUI still uses OnGUI. on the editor side but still. (i can live with that, as longest it wont use OnGUI on game play)
    2- Drawcalls, unity OnGUI does not offer texture atlas to reduce drawcalls, which it is one of the reasons it suffers bad performance among others.
    InstantGUI does not support texture atlases too.

    so, imo, despite the easy to use and intuitive and simple, it still do not compensate the performance loss while not supporting texture atlases to reduce drawcalls.

    maybe i am wrong, but that was what i noticed while testing the eval version.

    so I do not think ill be purchasing this gui alternative since my goal is to optimize performance as much as i can, so not supporting texture atlases will not work out for me.
    I wonder why the author did not think of that, or maybe a particular reason why?

    anyways, good alternative or gui editor for those who do not really care about optimization.

    keep up the good work.
     
  41. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,276
    Thromshall, you can use ElementsList. Elements in this list could be used as buttons. It does not gives an ability of custom elements placing - actually, it is just a list ) But as far as I understand you need the dynamic list of buttons, so this might help.

    Muber Gaming, InstantGUI uses OnGUI function only for placing editor element. It is not included in build and does affects your build performance. Consider it as sort of OnInspectorGUI or OnDrawGizmos.

    Pity InstantGUI does not suit your needs. Of course there is a particular reason why there is no atlasing. I'll try to find a way to implement it in future version, but I cannot promise.

    Draw calls on the whole is the biggest performance problem in plugin. If one is not strongly limited by draw calls - web, mac or pc game creator - I recommend consider using InstantGUI.
     
  42. mayorc1978

    mayorc1978

    Joined:
    Dec 30, 2013
    Posts:
    36
    Resolving Draw Calls problem is a must but consider also adding a fast solution to get a resolution independent GUI system too, because it's easy and fast, as long as you don't need a GUI with a different Res to adapt to screen, it could go fine for center screen menus, but for in game GUI it is not ready or same level, it requires alot of additional work to make it functional, and will discrimate it against other GUI systems.
     
  43. im

    im

    Joined:
    Jan 17, 2013
    Posts:
    1,408
    very nice
     
  44. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,276
    mayorc1978, a sort of resolution-independent gui could be embodied in the current implementation of InstantGUI. The only requirement for this is to leave all GUITexture borders set to 0, so that the central part could be scaled with element. Perhaps in the future I will have to abandon GUITextures and replace them with a custom objects - just for reasons of resolution independance and draw calls.

    im, thanks!
     
  45. HyenaGamesDev

    HyenaGamesDev

    Joined:
    Aug 4, 2013
    Posts:
    32
    I just had a quick question. In what way is the Evaluation version limited over the full version?
     
  46. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,276
    Evaluation version is just for evaluation purpose only, it should not be used in a final product. It does not support your own style creation. Evaluation version visual appearance is limited to "Glow" style only.
     
  47. kmk68

    kmk68

    Joined:
    Feb 14, 2014
    Posts:
    44
    It's works with Unity 4.3.4 Free?...
     
  48. kurotatsu

    kurotatsu

    Joined:
    May 10, 2012
    Posts:
    588
  49. GemSkullGamers

    GemSkullGamers

    Joined:
    Jul 17, 2014
    Posts:
    1
    How can i make this work with Application.LoadLevel("S_Menu");

    Here's the code attached to the instant GUI menu:

    Code (CSharp):
    1. using UnityEngine;
    2. using System.Collections;
    3.  
    4. public class Ui_Class : MonoBehaviour {
    5.  
    6.     public InstantGui InstantGui;
    7.     //
    8.     public InstantGuiElement SplashScreen;
    9.     public InstantGuiButton SS_B_Start;
    10.     //
    11.     public InstantGuiElement MainMenu;
    12.     public InstantGuiButton MM_B_Play;
    13.     public InstantGuiButton MM_B_Controls;
    14.     public InstantGuiButton MM_B_Credits;
    15.     public InstantGuiButton MM_B_Quit;
    16.     //
    17.     public InstantGuiElement ControlsMenu;
    18.     public InstantGuiButton CO_B_Back;
    19.     //
    20.     public InstantGuiElement CreditsMenu;
    21.     public InstantGuiButton CR_B_Back;
    22.     //
    23.     void Start(){
    24.         DontDestroyOnLoad (this);
    25.     }
    26.     void Update () {
    27.         // Splash Screen
    28.         if (SS_B_Start.activated)
    29.         {
    30.             Debug.Log("SS_B_Start");
    31.             Application.LoadLevel("S_Menu");
    32.             SS_B_Start.activated = false;
    33.             SS_B_Start.pointed = false;
    34.         }
    35.         //MAIN MENU
    36.         if (MM_B_Play.activated)
    37.         {
    38.             Debug.Log("MM_B_Play");
    39.             MM_B_Play.activated = false;
    40.         }
    41.         if (MM_B_Controls.activated)
    42.         {
    43.             Debug.Log("MM_B_Controls");
    44.             Application.LoadLevel("S_Controls");
    45.             MM_B_Controls.activated = false;
    46.             MM_B_Controls.pointed = false;
    47.         }
    48.         if (MM_B_Credits.activated)
    49.         {
    50.             Debug.Log("MM_B_Credits");
    51.             Application.LoadLevel("S_Credits");
    52.             MM_B_Credits.activated = false;
    53.             MM_B_Credits.pointed = false;
    54.         }
    55.         if (MM_B_Quit.activated)
    56.         {
    57.             Debug.Log("MM_B_Quit");
    58.             MM_B_Quit.activated = false;
    59.             MM_B_Quit.pointed = false;
    60.         }
    61.         //CONTROLS
    62.         if (CO_B_Back.activated)
    63.         {
    64.             Debug.Log("CO_B_Back");
    65.             Application.LoadLevel("S_Menu");
    66.             CO_B_Back.activated = false;
    67.             CO_B_Back.pointed = false;
    68.         }
    69.         //CREDITS
    70.         if (CR_B_Back.activated)
    71.         {
    72.             Debug.Log("CR_B_Back");
    73.             Application.LoadLevel("S_Menu");
    74.             CR_B_Back.activated = false;
    75.             CR_B_Back.pointed = false;
    76.         }
    77.     }
    78. }
    My problem is when I change scenes, it works, but if i return twice I have an error! NullReferenceExeption: Object Reference not set to an instance of an object.
    We are using unity 4.5.2, but this happened in 4.5.1 as well.
    We want to use this in our final product not just for prototyping, but at the moment we can't use/implement it. There is almost not code exemple on how to use/connect with the objects of instantGUI. No information at all on how to use the sendmessage from objects.

    Can anyone give some exemples.

    Thanks this Gui Rocks! we just need a little help on how to use it properly and to it fullest.

    - GemSkullGamers
     
    Last edited: Jul 17, 2014
  50. Lostlogic

    Lostlogic

    Joined:
    Sep 6, 2009
    Posts:
    693
    How can you "easily" alter the height of the buttons using the default Glow style? I am developing a mobile game and the buttons are much too tall.