Categories & Tags
Archive

The New GUI

June 29, 2012 in Company News and Info, Technology, Unity Products and Services by

While most people at Unity are busy trying to get 4.0 launch-ready, we have a dedicated team trying to get our new GUI ready for a later release. We figured it was time to share a few details about it. To give you an idea of what we’ve been cooking, here is a quick test I put together in 1 day:

Basics

When making GUI for games, all assumptions about how controls should look (or sound) go right out the window. It was critical for us to give you full flexibility, so our solution uses animations for everything. Let’s look at a (slightly dull) button:

This button consists of 3 elements: the background image, the outline and the label. In the new GUI Editor, these would be made with different elements.

This is very powerful as it allows you to animate each element separately. The Button component on the root object plays animations on its children in response to user action. Each of these animations can activate hierarchies of GameObjects, so if you want to add a sound on hover, simply drag in a clip to the GUI Editor while recording into the Hover state. No coding required.

Positioning

We’re always doing everything we can to make your work in Unity be as smooth as possible. This extends to the new GUI system, where we built a complete editor up from scratch. Simply drag your freshly-assembled buttons into the GUI editor, move them around, resize, reparent, animate them. Have some favorite UI controls you keep returning to? Just drop them in the toolbar, and they’ll sit there right next to the built-in ones – ready for when you need them.



In order to aid in layout flexibility we adopted Apple’s sizing model for controls. Each GUI element has a local size relative to its parent, and a collection of resizing flags that tells how to handle the parent changing size. Combined with parenting, this is a great way to handle the different aspect ratios of modern devices.

The GUI system also has a master scale factor in order to make it easy to support Retina displays.

3D GUI

3D groups enable full perspective transforms of your UI elements and are useful to create depth in your designs. You can see this used in the radar element. Each blib is it’s own unique object with animations in all 3 dimensions.

The image you see on the right was built in the GUI Editor with no scripting involved.

 

Sorting

The timelines view provides explicit control over the render order of items. The topmost layers are (surprise!) on the top, and you can easily drag items up and down the timeline.

Any textures used in the GUI are atlassed automatically. To minimize draw calls, we employ dynamic overlap detection and use that to figure out which elements we can switch around without causing any visible depth changes. The GUI shown on the top of the post is rendering in 5 draw calls.

Controls

The new GUI system will ship with an array of standard built-in controls, as well as finely tuned thumbstick controls for mobile games. The GUI system includes full support for multitouch. To respond to, e.g., a user button press interaction, you can simply drag in a GameObject and choose which method to call. From the C# side, this is simply a delegate, so you can also hook everything up from code. All the built-in components are fully scriptable.

If you want to make your own controls, you can derive from GUIBehaviour. This gets you callbacks for OnMouseOver, OnMouseOut, OnKeyDown, OnMouseDown, etc. All of our controls use the animation system for full flexibility, so you can mimic that – or you can do pretty much anything from code.

That’s it from me! I’m on a complete high over having a full day of making a GUI that felt both creative and fun! I’ll use some of that energy to fix some bugs in this baby – so we can get it into your hands :)

If you have any questions about features or details, please post them below and I’ll do my best to answer them!

Keep Coding!
Nich

Share this post

Comments (125)

Comments are closed.

Richard Fine
29 Jun 2012, 9:05 am

Looks very nice so far.

Do you have support for 9-piece elements, so we can make buttons, windows, fields, etc that can be easily reused and resized to fit different content?

How would you envision globalization/localization working for this stuff? Will be it straightforward to change strings around?

What are the major things left on the to-do list?

Takuan
29 Jun 2012, 9:17 am

This looks pretty fantastic, can’t wait to try it out :-)

29 Jun 2012, 9:18 am

Looks great! This is probably one of the features I’m looking forward to most in Unity 4. What about the html-like mockup for GUI Text that was mentioned before though? Will that be included as well?

Yohan Hadjedj
29 Jun 2012, 9:28 am

Yup, looks really great !

One question though, are you planning to support a draggable list of elements ? With clipping and an iOS-like animation scroll ? That would be really awesome ;)

Geoff
29 Jun 2012, 9:33 am

Now this make me interested in upgrading to Unity 4.x! The GUI has been a real pain point for us.
I’m interested in the draggable list that Yohon mentioned as well. Any plans for that?

Erik
29 Jun 2012, 9:34 am

I see you can animate the objects in 3d space, but can you animate the textures?
What about dynamic lists ? ( like for a store or inventory )

imaginaryhuman
29 Jun 2012, 10:13 am

Looks neat. I’m not quite sure now what this means for the old Unity GUI with its GUILayout and so on, which was an entirely 2D solution. Could you build custom editor extensions using this new GUI – ie will it come with/support all of the standard Editor gadgets/buttons etc? Will the Unity editor itself now get re-implemented using this new GUI so that it’s faster? And how simple would it be to set up an `application` where you have multiple windows and hierarchical structure and so on?

Joachim Ante
29 Jun 2012, 10:14 am

@Tony Coculuzzi: Support for html like tagging of text is in 4.0 and will naturally also be supported in the new gui framework. The html-style text tagging eg. MyBoldText is supported on all unity features for rendering text:
GUIText, TextMesh, new GUI, immediate mode GUI.

Joachim Ante
29 Jun 2012, 10:16 am

>I see you can animate the objects in 3d space, but can you animate the textures?
The GUILabel and GUIImage class are simply components, just like other components, you can completely drive them from script. Thus you can easily exchange an image or text at runtime. Each image also comes with an offset&scale value which can be used for tiled sprite animation.

Brent
29 Jun 2012, 10:16 am

I will mail you a klondike bar if you’ll give us a video of this stuff in action.

Joachim Ante
29 Jun 2012, 10:18 am

> Will the Unity editor itself now get re-implemented using this new GUI so that it’s faster? And how simple would it be to >set up an `application` where you have multiple windows and hierarchical structure and so on?

We believe that the immediate mode GUI system works briliantly for editor UI, so we will keep on supporting both but recommend that people use the new GUI system for in game GUI.

Wes
29 Jun 2012, 10:30 am

Please tell me draggable lists will be supported, and that positioning and scale will now be adaptive.

29 Jun 2012, 10:46 am

This looks awesome! cant wait to get started with it. Thanks Nicholas!

29 Jun 2012, 11:30 am

Excellent that looks so much better!

Simone
29 Jun 2012, 11:31 am

Looks very interesting so far

NemOry
29 Jun 2012, 11:32 am

very cool improvement to the editor. 2 thumbs up

29 Jun 2012, 11:33 am

This looks stellar, good work guys, can’t wait to play with it

Fabiano
29 Jun 2012, 11:37 am

NICE !!

Femke
29 Jun 2012, 11:38 am

Could you give a video demostration of the GUI that you build above in action ?

Bryant
29 Jun 2012, 11:39 am

Beautiful :) Can you talk about the workflow for retina vs. non-retina displays? How is the “master scale factor” used?

Nathali Abbortini
29 Jun 2012, 11:43 am

What about the ScaleForm integration ?
Was that not supposed to be the new UI solution for Unity ?

29 Jun 2012, 11:43 am

Looks pretty nice, maybe its a better solution than scaleform.. Specially for mobile platforms. How about the atlasing system ? Would it be supported for texture sheet animation, something like tk2d does right now ?

29 Jun 2012, 11:44 am

Great stuff !

Sebastiano
29 Jun 2012, 11:45 am

I hope the new GUI involves a complete new framework as well. I.E. I hope now the rendering and the logic is separated.

Per
29 Jun 2012, 11:46 am

Does this system support layout animation? As in a menu where clicking an entry reveals a dropdown or additional entries that push other entries in the menu/list lower? Or transitioning between different GUI “scenes”?

Also what about text entry fields (high scores), or even multi-line text and more advanced formatting for e.g. registration forms or social media? It would be really nice to support everything up to basic HTML content and tags such as colors, links, bold, italic etc portions of formatting, maybe even inline bitmaps in the text to show nice looking images of the controller buttons to press in instructions to keep resolution and location independent rather than using a whole bitmap for the text + inline images.

29 Jun 2012, 11:46 am

Is this going to be in the base version of Unity or the Pro version only?

29 Jun 2012, 11:49 am

i’m so glad Unity4 didn’t sellout in this area, looks really interesting, look forwards to trying it soon (multi texture draw ordering in 3d layouts).

29 Jun 2012, 12:00 pm

Wow Nich, thats looking awesome, So So So looking forward to getting my hands filthy with this.
Of course the biggest scary thing is the whole draw call nightmare but I’m guessing you’ve beaten that beast down as well.

imaginaryhuman
29 Jun 2012, 12:01 pm

Cool. So all GUI elements are basically parts of textures images, so there is no vector-graphics involved right?

Mortoc
29 Jun 2012, 12:10 pm

” From the C# side, this is simply a delegate, so you can also hook everything up from code. All the built-in components are fully scriptable.”

Thank god.

29 Jun 2012, 12:19 pm

Looks really nice, can’t wait to use it for myself,
but it’s making me a little bit sad because I am developing the exact same thing for unity
with even the same basics -.-
animations, timeline and state machine were my next steps ;)
everbody who wants can look at my blog : http://treffpunkt3d.blogspot.de/

I have one last question: Will the new GUI system be avaiable in the free version of Unity without
restrictions? When yes, what about scaleform?

29 Jun 2012, 12:22 pm

I’m impressed with the results so far of the new GUI presented in the blog post!

I’ve come up with a solution of my own pretty close to the announced today!

I would like to know how or if unity4 will address these “issues”:

- 1 draw call command for each element with texture instead of 1 draw call for all (or most) of the GUI
- Masking of elements using an alpha texture (without these elements being inside the container assigned as a mask)
- Filter effects (blur, glow, outline, …)
- Vector draw routines (lines, shapes, gradients, textured polygons, round cornered shapes)
- This would be great to store the draw commands instead of the texture itself.

**Edit
- Allow users to change the font material and set a custom shader for Dynamic and Texture Fonts

Keep the great work!

Brendan Gallagher
29 Jun 2012, 12:23 pm

Looking Good. But how far ‘behind’ Unity 4.0 will this be? Shortly would be a terrific response, 4.5? Not so terrific.
The concept look real good, ability to deliver it in a timely fashion is the deal breaker. Tech moves so fast, that months are years. Will Unity 4 off as an option, Scaleform integration?

Not looking to poo poo on the look-see, it’s nice, just need to know how far into the future we’re actually looking ;`)

Martin Wigum
29 Jun 2012, 12:36 pm

Finaly 3D GUI. Been waiting forever <3 what version is this gonne be in?

Yannic
29 Jun 2012, 12:37 pm

You’re so awesome :)

Mike Cook
29 Jun 2012, 12:38 pm

It’s about damn time! Cannot wait for this! When this ships, thats when I will finally upgrade from 2.6 :P

NeptuneImaging
29 Jun 2012, 12:45 pm

This is looking very nice… something that will make life simple… what if I wanted to make, let’s say a scrolling movelist for a fighting game, will that be possible here?

29 Jun 2012, 1:11 pm

It looks pretty nice so far, though not 100% what I had expected (i.e. less Editor/Inspector driven editing and more of code/xml drive one).

I am not familiar with the Apple sizing models, but will collapsible GUis will be possible? i.e. if a certain component becomes invisible (because it should only be visible when a certain checkbox is on for example), will the space be automatically become available and all the rest of the UI will indent and close the gap?

What I mean similar to the Android “GONE” state (there are three states for Views: Visible, Invisible and Gone). Invisible will just make it invisible but not free the space. Gone will free the space.

I also agree with Richard Fine, having a 9-patch support is essential for flexible UIs, where the corners of the buttons should under no circumstances be resized, only it’s content.

Nicholas Francis
29 Jun 2012, 2:12 pm

@wes Position and scale will optionally be adaptive. You choose what you want to scale with parents, what to anchor (or what to anchor 10px from left edge, and the use half of the remaining space). Draggable lists would be nice to get in, but we’re not delaying the release for it

@ Bryant For retina, you would author your GUI at retina res, then at runtime set the scale factor to .5 if the device was non-retina. Then you’d get the exact same resizing/anchoring behaviour as retina, but at only 1/4 of the pixels.

@Nathali Abbortini: Scaleform is a separate product. If you have a lot of Flash UI (or Flash artists in-house), it makes a lot of sense to use it. Unless you’re married to Flash, we believe that there’s much better workflows possible, and this is our attempt at finding out what they are.

@Jaroslav Stehlik: All GUITextures support scale and offset, so it would be trivial to write a script that does texturesheet animation

@Per: Animated menus are very easy to do. For the other stuff, I’d say “maybe, someday”. Our focus is on making awesome Game UIs possible, not re-implementing a browser :) However, all the basics are exposed so if somebody wants to build on top of this and do their own stuff, that’s perfectly possible

Nicholas Francis
29 Jun 2012, 2:19 pm

@Jason Olsan: All I’ve described here is in Unity Free. There’s a few Pro-only features in the initial release, with more to follow. The basic idea being that Pro features will be more for eye-candy than required functionality.

@imaginaryhuman: No vector graphics for now.

@eduardo.costa: Masking effects, image effects. These would be Pro-only (requires rendertextures), but we’re not expecting to ship them in the first release.

@Brendan Gallagher: We’re not giving a timeline. I’ve been working on this for longer than any other project, and I want to get it out the door and get my life back :) Scaleform integration is a separate add-on you purchase from Autodesk.

@tseng: Think of the layout engine as “this texture is anchored to the center of the parent, and scales it’s size with it”. We do not have automatic flow layouts (with items “pushing” each other about). The goal here is to make something where artists can be creative and have pixel perfection, not to create a declarative GUI language that programmers love.

Per
29 Jun 2012, 2:49 pm

@Nicholas Francis – Thanks for the info. Are there any changes or improvements with text/font handling?

It sounds like this GUI is going to be event/callback driven like Flash rather than built on the existing OnGUI constant polling, is that correct?

29 Jun 2012, 2:55 pm

Really nice! People saying the old version is better are stupid. Graphic things need to be developed graphically, I bet some people said level editors were bad as well.

Richard Fine
29 Jun 2012, 3:42 pm

@Nicholas Francis: Any chance of answers to my questions in the first comment? :-)

Bryant
29 Jun 2012, 3:50 pm

Thanks for the response, Nicholas :) Just to clarify the retina workflow: the GUI elements are scaling down in size for non-retina displays rather than doing a texture swap? Are there plans to support automatic texture swapping or halving the size of the generated atlases? I’m worried about memory usage :-/

Thiago
29 Jun 2012, 4:21 pm

Reaaaaaaaaaally cool! =D

Rosa
29 Jun 2012, 4:30 pm

Awesome! can make “Watch Dogs” type gui map!

X
29 Jun 2012, 5:00 pm

impressive tech demo teaser! Well played Unity

X
29 Jun 2012, 5:06 pm

Again, awesome demo teaser.

side note, albeit an important side note imo:
Please support user-created texture swapping based on device type & OS. This is very important for memory on mobile, that a texture not be loaded at retina-size(or close to), then downsized on platforms that will have much of their available memory filled by such a set of textures. A toolset, a Unity Asset, like “multiplatform toolkit” is a great example of using defines to only resource load a pre-sized texture based on platform / device, that the developer loads and defines individually on a per-platform & device basis.

Ranajith
29 Jun 2012, 5:14 pm

Awesome…
:)

Buffonomics
29 Jun 2012, 5:29 pm

As good as this looks, I’m forced to raise the question of Draw Calls.
I hope it was designed around having it that each UI element does NOT claim a draw call.

Is there autoatlasing going on in the background? Please guys, don’t release this unless you have made sure that you have properly engineered efficient draw call use otherwise it may end up not being any better than current 3rd party 2D/3D UI solutions and would be almost just as useless as the current in-built GUI system.

Thanks. =)

X
29 Jun 2012, 5:54 pm

+1 to low draw calls, obviously. Thats why we use SpriteManager2 & EZGui at the moment ;-)

Daniel Mileusnic
29 Jun 2012, 6:54 pm

Wow, looks very cool; nice work guys! I’m curious if this GUI will function properly as a pause menu. Because currently animations are timeScale dependent, so when you set it to 0, all animations freeze…

29 Jun 2012, 6:55 pm

Awesome job guys!
Keep it up! :D

29 Jun 2012, 7:59 pm

Nice :)
Thanks for giving us some clues on what you are cooking.
I like a lot the new animation timeline, looks very intuitive.

Joshua
29 Jun 2012, 9:13 pm

So what happened to scaleform? Is this scaleable like vector graphics?

lazalong
29 Jun 2012, 10:16 pm

Nice. I can’t wait!

- Will the GUI be able to catch clicks so that objects behind are NOT triggered?
Or will the overlay detection also include gameobjects?

- Will you release it along with a tutorial on custom gui style sheet? Please, yes.

jakeliu
29 Jun 2012, 10:21 pm

There is a problem in 3.x when create GUI that have transparency has to use special photoshop action to create Dilate then create custom alpha and set background to average color. Does 4.0 fix this problem? Can we just use transparency png for those UI element?

Bruno Xavier
29 Jun 2012, 10:25 pm

Looks promising.

Ian
29 Jun 2012, 10:41 pm

Thank you for using delegates! Every time I have to type OnSomeEvent() I feel like I’m coding in ActionScript 2.0

29 Jun 2012, 10:42 pm

@UnityNich (oh Nicholas)
Awesome work dude. You are spending your life on something creative and good however it might take a long time.
Is it supported to render all GUIs on a texture instead of the screen? Can be an important feature for many simulations and some games. Many other engines have it too. Does the new text rendering allows for rendering complex script languages like Farsi and Arabic? if no at least provide us with enough APIs and documented APIs to be able to implement controls easily. Also please document the old GUI system more in advanced parts.
@Joachim Ante Surely the new GUI is good for games but for doing tools and windows for the editor unity’s immidiate GUI is something great.

29 Jun 2012, 11:56 pm

Fantastic :)

30 Jun 2012, 1:27 am

Very nice work :)

I would like to know the answer to Richard Fines questions too.

I assume its a 9-piece one as a EZGUI / GUITexture style fulltexture solution would be horrible VRAM wise.

Kah Yong Seow
30 Jun 2012, 2:22 am

What about the porting of GUI code from Unity3D 3.x to the new GUI system? Or will we have to code from scratch up again?

30 Jun 2012, 2:28 am

since my 2,5 years with unity, this is the most anticipated feature ever!

30 Jun 2012, 5:09 am

It looks like it’s keeping to general Unity concepts utilising GameObjects and Components (like NGUI), while enhancing the standard animation window.
Is this correct? If so THANK YOU. I was getting worried since shuriken came out with it’s own weird blackbox implementation of components (WHY?). MecAnim looks a bit blackbox too worryingly (I could be wrong, but I bet the state machine isn’t reusable for example)

30 Jun 2012, 6:27 am

>> Joshua: Is this scaleable like vector graphics?

If you want scalable vector graphics, including SVG import and vector text generation, check RageTools. Version 1.3 (about to be released) has got layered vector graphics support for perspective cameras and 3D-rotated vector art, check a demo here: http://www.freakow.com/ragetools/demos/ragetools-perspective.html

So using it and any animation / tweening solution you can already do 3D GUI graphics, without the ugly aliasing and texture memory waste associated with scaled-down textures or the blurry-ness of up-scaled bitmaps, which are completely incompatible with GUI graphics legibility demands.

Mark
30 Jun 2012, 8:09 am

Soooo glad I upgraded my licenses to Unity 4.0 – now I can wait with anticipation to play with this new offering when its released later in the cycle!

Joachim Ante
30 Jun 2012, 9:38 am

@Buffonomics:
Absolutely! Batching and texture atlassing is an integral part of this solution. Fist of all we do batching of all draw calls where depth order allows. The scene above renders in draw calls, while enforcing correct depth order for overlapping elements.

All textures can be assigned with uv offset & scale. To ease texture atlassing, there is also builtin texture atlassing. It builds a texture atlas based on all textures in a canvas at build time. Thus the texture atlassing has no impact on performance during gamplay or loading.

Joachim Ante
30 Jun 2012, 9:41 am

@Kah Yong Seow: We will continue to support the old immediate mode GUI framework. 4.0 has a couple of important performance optimizations in it too. But of course for new in game GUI you should transition to the gui editor based UI.

Lux
30 Jun 2012, 10:14 am

Wonderful!

Support it also not rectangular button (example: circular) with precise clickable area?
Is there a way to make cake and other type of chart?

koblavi
30 Jun 2012, 6:13 pm

The sum of 5 and 8 is 13 :-) The sum of Unity 4 & New GUI is simply brilliant. Nicholas, I think you just moved to the top of my List of top 3 favourite guys at Unity Tech. Now that we’ve seen, we believe there’s a new GUI cooking up at UT. Please don’t rush the release. Take all the time you need to make sure its rock solid .Definitely looking forward to this

Pete
30 Jun 2012, 6:57 pm

Great! Will the new GUI system handle the situation when the user plays with the Control+Plus, Control+Minus, Control+0, Control+MouseWheel on a browser? (will the elements resize automatically or remain with an absolute size?)

30 Jun 2012, 7:30 pm

Who cares about Scaleform :-P . We want Unityform (even if not vector). Finaly….THE NEW GUI!

eddy
1 Jul 2012, 2:40 am

I have same question as Sebastiano : are rendering and logic separeted ?

Milad
1 Jul 2012, 2:52 am

Well Done!

1 Jul 2012, 3:12 am

@Richard, “Do you have support for 9-piece elements, so we can make buttons, windows, fields, etc that can be easily reused and resized to fit different content?”

Yes. Both of the “other” existing GUI systems in Unity (GUITextures and UnityGUI) support this, and it’s an extremely useful thing to have. The new GUI will have that as well.

1 Jul 2012, 3:31 am

@Sebastiano: Rendering and logic is separated. The new GUI system is much more Unity-like: you add components – e.g. a GUIImage – to a gameobject, and tell it where it should render, and what UV rect it should use. Then it renders itself.

@Lux: You would have to code that yourself in V1.

@Pete: No, browser scaling is not built in. However, since you can arbitrarily scale the GUI, it would be quite simple to implement (I think, haven’t tried :)

@Richard: In addition to 9-piece textures, you can also use parenting & the resize flags to get even more flexible layouts (e.g. yes, I want to labels on this button, they should split horizontal space evenly, with 20 px on left side and 40 on right)

Unisip
1 Jul 2012, 3:58 am

This thing looks awesome! Can’t wait to try it out!
Can you clarify a little the types of standard controls we should expect? (from the screenshot I can identify labels, scrollbars, buttons, slider…)

Specifically, can you compare with existing OnGUI controls? Here’s a list of important ones:
- buttons, toggle buttons
- text fields, text input
- scrollviews
- panels or windows

If some of the above are not present in the new GUI, can a knowledgeable C# programmer expect to be able to reconstruct them using the exposed classes in the new GUI API without too much stretching? (in the past, it was possible to rewrite complete retained mode mesh based UIs, but with some painful areas like text support, clipping…)

1 Jul 2012, 4:42 am

Why no one answred me? what about rendering the GUI on a texture instead of the screen buffer?

1 Jul 2012, 5:48 am

“Think of the layout engine as “this texture is anchored to the center of the parent, and scales it’s size with it”. We do not have automatic flow layouts (with items “pushing” each other about). The goal here is to make something where artists can be creative and have pixel perfection, not to create a declarative GUI language that programmers love”

I think this may result in some issues earlier or later, especially on mobile devices where UI space is precious. This may work well with different resolutions and/or similar aspect rations (i.e. 3:4, 4:5 or 16:10, 16:9), but mobiles are fundamentally different.

On Mobiles you have landscape and portrait mode and resolutions like 1:2, 16:10/16:9 oder 2:3, which are fundamentally different and if you flip the orientation, the resolution drastically changes (i.e. from 800×480 to 480×800).

This has massive influence on the GUIs layout and I think a flexible UI like used in Android SDK for example is imperative for game development too

Nicholas Francis
1 Jul 2012, 6:19 am

@ashkan:
sorry, must have missed it. Yes, you can get GUI into rendertextures – pro only

@unisip:
we haven’t locked down the precise control list yet. We want to get as many as possible, but if the rest of the system becomes stable, we won’t hold up the release waiting for PerfectCrossPlatformScrollviewWithOptionalSmoothFocusTracking to be ready :)

It’s very extensible from the scripting side – we don’t have any special features that you won’t have access to.

1 Jul 2012, 7:55 am

@Nicholas, no problem at all, so i copy paste the first message and if you answer it in full, i would be really thankful, specially documenting the advanced stuff well or maybe releasing the source for some controls would be awesome. Also in last system we did not have access to many text rendering features and info and could not render text on textures or … which hopefully is fixed here because you said we can render on textures, does the events from mouse and … work on the rendered texture too? let’s say i have a screen on the wall which has GUI on it.

last message

—–
@UnityNich (oh Nicholas)
Awesome work dude. You are spending your life on something creative and good however it might take a long time.
Is it supported to render all GUIs on a texture instead of the screen? Can be an important feature for many simulations and some games. Many other engines have it too. Does the new text rendering allows for rendering complex script languages like Farsi and Arabic? if no at least provide us with enough APIs and documented APIs to be able to implement controls easily. Also please document the old GUI system more in advanced parts.
@Joachim Ante Surely the new GUI is good for games but for doing tools and windows for the editor unity’s immidiate GUI is something great.

——–
sorry if it’s too many questions and requests.

Hermes David Montes de Oca Segovia
1 Jul 2012, 3:28 pm

looks great, lets hope it performs great also..

it will take some serious awesomeness to make me move to that new gui system from NGUI

1 Jul 2012, 5:34 pm

OMG…..this actually exists.

2 Jul 2012, 2:26 am

@X: Unity will make sure to load the texture res required for a given screen.

@Buffonomics: It’s using pretty cool heuristics to figure out what can be batched with what and I’m sure you’ll be surprised with the results once you see it in action :)

@Vectrex: Indeed – game objects, components and animations, so it builds up on the knowledge you already have.

@tseng: It’s easy to write a script that will move around the GUI elements just the way you want (in addition to them being animated). But as Nich mentioned, declaring layout like this isn’t how artists typically structure GUIs and we feel our approach is simpler and better, while still allowing for crazy stuff with scripting.

@Ashkan: The screen on the wall thing you mention indeed naturally handles input, but it’s probably not something we will ship in version 1.

@Mortoc: No, it was flesh and blood programmers.

2 Jul 2012, 11:42 am

Ok this is very cool, time to raid the penny jar and buy the full version.

2 Jul 2012, 3:00 pm

FINALLY!! I don’t usually post exclamatory sentences, but this featured deserves it!
Congrats for this much needed adition to Unity 3D.

2 Jul 2012, 3:03 pm

EDIT: * feature
PS: To be able to edit blog comments would be nice too :)

3 Jul 2012, 5:22 am

Finally it’s coming! And looks amazing too. I just hope it will also support 9-slice scaling for GUI elements!

3 Jul 2012, 5:58 pm

Looks like you guys are also making a general purpose timeline editor. I’m i right? :D

4 Jul 2012, 5:35 pm

This looks quite good indeed :)

So, I assume we can safely tell that the code attached to the GUI elements will be processed as any other component, once per frame, is that right?

5 Jul 2012, 11:50 am

It would be great if there examples:
Scroll View
Popup List
Drag & Drop
Localization
Servers browser (grid)
and much more ..

Ekis
5 Jul 2012, 2:40 pm

“Any textures used in the GUI are atlassed automatically.”

Would it be possible to include this “auto-atlas” functionality to the textures in the game scene? With maybe options to select and group certain textures together in separate atlases.

It would be really cool if you could try to modify this “auto-atlas-for-GUI” code to work with the objects in the game scene. Wouldn’t it be great to have the engine auto-atlas game object textures on demand?

Thanks.

Valentin
7 Jul 2012, 6:52 am

What’s good in this if there’s no vector graphics?
Vector graphics support would be a killer feature, but this is just meh…

konkol
8 Jul 2012, 1:09 pm

What about fonts? Can it use system fonts or only predefined bitmaps?

10 Jul 2012, 4:45 pm

Please consider allowing specified animations to run during a timescale of 0. This would make your awesome new GUI easy to handle in pause menus.

diego
12 Jul 2012, 11:36 am

Will this work with the unity web player? Also, will it be available when exporting content to the flash player?

16 Jul 2012, 1:17 am

@Valentin: We’re not saying “no” to vector graphics, or at least some functionality of that sort, but for now we’re only talking about the initial release features.

@konkol: Fonts.

@Mike Gale: Indeed!

@diego: There’s nothing preventing the system from running in the web player or the flash player.

Broblerone
18 Jul 2012, 5:31 pm

How easy is it to make the new GUI work with keyboard/gamepad input?

Marc Olivier Chouinard
19 Jul 2012, 7:18 pm

For SVG support, what would be interesting, is automatic conversion/import from SVG to bitmap. So we can also just select the texture resolution per platform. Even if it require Inkscape to be installed for the conversion would be acceptable (Since it free and open source). Could then be use by anything inside unity

24 Jul 2012, 3:56 pm

Will all this work well on Mobile from the start?, i think the old system was bad for mobile apps…

Alex
25 Jul 2012, 10:23 pm

I cry…thanks Unity my co-workers lost all respect for me now.

José Augusto Thomas
26 Jul 2012, 11:13 pm

This is soo amazing! Waiting for this since a long time!
Could you guys tell us how many months this is already being done and the percentage of this new GUI system that is fully working? Just an estimated value, so we can deduct a date for this amazing release!

Also, it would be great if we could see more news about the development over time.

Thank you and keep up the good work!

~A Brazilian fan

26 Jul 2012, 11:48 pm

Awesome! Props for taking the time to do this properly it will really complete Unity as a package. Can’t wait…

6 Aug 2012, 6:41 pm

This is great!!!! I’m waiting :)

urgrund
7 Aug 2012, 11:52 pm

it was asked earlier but don’t think it was answered – what about gui ‘scene’ or ‘canvas’ transitions? …example, transitioning from MainMenu to SelectedCharacter, that has a ‘Return’ button that goes back to MainMenu?

Will this be script driven? Do you have a container element, for example that would hold ‘MainMenu’ and we just call Close() on it? ….what if we wanted ‘exit’ animations, ie) all elements whizz off screen before the next menu is loaded?

I know all this could be done through code, but I’m curious what the framework is like for supporting multiple menu ‘scenes’ and custom transitions between these scene.

It’s looking great, can’t wait to try it out!

Nando Amorim
8 Aug 2012, 4:26 am

Congratulations, looks great! I have only one concern: why does it require 5 draw calls to render this example? NGUI would do it with just one draw call, using the same atlas to store all bitmaps and fonts. I would prefer to use a Unity-native solution for my UIs, without plugins, but since I target mostly handheld devices, the draw call issue is a major one for me. Do you expect to optimize it in the future?

8 Aug 2012, 10:43 pm

wow~太棒啦~
希望能尽快使用这上新的UI~
最好能方便适配不同的屏幕尺寸~

10 Aug 2012, 8:48 am

Looking forward to the new Unity GUI? And hoping it’ll someday use vector graphics? Why wait when you can use a.. “time tunnel”? ;)

http://www.freakow.com/ragetools/demos/timetunnelGUI-demo.html

11 Aug 2012, 6:32 pm

@nicholas There’s a feature that I’d really like to see in Unity – I call it a “master clock”.

Basically, it is the singleton in Unity runtime which dispatches some kind of signal before any of the MonoBehaviour routines. Something like “Now I’m gonna run OnGUI() on each script on stage”, or “Now i’m finished with running Update() on all scripts”.

I found this very important for doing the asynchronuos programming in Unity. I’ve been faking this feature with a single MonoBehaviour (see https://github.com/dkozar/eDriven/blob/master/eDriven.Core/Mono/SystemManagerInvoker.cs) which is being instantiated once per scene. This scripts basically “pumps” the heartbeat into all classes which need a clock.

Now, the problem is that nothing guarantees that methods of this script will run before or after other scripts on the scene. That’s why I think Unity runtime should make this available. Then the interested parties (like GUI system) could connect to this clock.

imho the clock should communicate with subscribers via Signals (https://github.com/dkozar/eDriven/tree/master/eDriven.Core/Signals) which are very effective and lightweight (or a similar concept).

About new features mentioned in Your article: I think that it is generally a bad idea for GUI to work exclusively with MonoBehaviour (event handlers) because GUI has really nothing to do with a 3-D world (not in a direct sense).

Also I think it’s a bad idea to drag&drop sounds directly into GUI – it maybe sounds cool, but one would probably need some kind of evaluation of what sound to play in a given set of circumstances which brings us to decoupling a sound player via delegate.

Danko

Jesper Rasmussen
21 Aug 2012, 5:32 am

Any chance of importing flash movie clips into the new Unity GUI? I think it would be very valuable for production to separate the logic programming from content creation.

Peter
22 Aug 2012, 1:29 am

sorry, i am late on this.
what does support for “multitouch” mean? will we have finally multitouch-events on windows7?

EskimoJoe
23 Aug 2012, 8:48 am

important controls missing:

- ListView, Tabbed Page Control
- Combo box
- Listbox
- Edit control with Masked-edit
- Data connectors
- Sliders
- Progress bars.

Not invented here :(

NVentimiglia
23 Aug 2012, 7:16 pm

important controls missing:
- Combo box
- Listbox

Mark foley
26 Aug 2012, 1:39 am

This looks great! Will the 3d nature of these controls mean they will play well with 3d vrntc- eg oculus rift, shutter glasses etc.

Kostya
29 Aug 2012, 12:55 am

Best GUI Solutions its Adobe Catalyst and Autodesk Scaleform

Staples
29 Aug 2012, 8:03 pm

Not quite was I was hoping for, but maybe you have more up your sleeve.

Can you comment on other features that have been requested by the community on a number occasions, including:

- Modal windows/dialogs
- Dropdown GUI components

Many games have in-game settings that make heavy use of dropdowns, they are a standard component that should be available in any GUI system.

Staples
29 Aug 2012, 8:04 pm

Also, can you confirm that the current GUI & GUILayout system will remain, and will it be getting any improvements?

I’m happy enough with GUI & GUILayout, I just want it to handle modal windows, nested windows and dropdowns.

Forest_Gimp
3 Sep 2012, 1:34 am

“….will we have finally multitouch-events on windows7?”

Excellent question Peter. This is extremely important for me too, especially considering all the claims of “full Windows8-support”. I have no idea what the difference between Win7/8 multitouch support is, but Win7 I definitely need, and Win8 would be usefull as well of course. Leaving out Win7 multitouch would be bad, expecially as it’s by far the more popular platform.

Kot
4 Sep 2012, 2:00 am

When ?!?

Adam
6 Sep 2012, 7:30 pm

Wow, great, fantastic, …
When do you suppose to release?

Ibrahimoglu
8 Sep 2012, 1:47 am

When? I am using Unity 4.x beta 7 (the current beta) , when will we see the GUI system in beta versions ?

zac
9 Sep 2012, 6:55 am

Great !!
Keep up the good Work.

I hope there is no need to learn actionscript. I cant hire a flash guy, musician, programmer and artists

sriram
11 Sep 2012, 11:42 pm

Thats really awesome…. watched the unite 2012 new gui video…. Eagerly waiting for the Unity 4.0 .

15 Sep 2012, 5:55 am

Great! I love Unity! ^ _ ^

Leave a Reply

Comments are closed.