Building a better UI workflow in Unity

A lot of people ask us about our thoughts on Unity as an environment, and I thought I’d share a bit of one system I’ve been working on recently.

Typically, we have only good things to say about Unity – however, our common complaints relate to the UI system(s).  The 2.0 immediate mode OnGUI is quite configurable, but it gobbles performance – and isn’t artist friendly.  It can be very powerful, but layouts are complicated and unintuitive – and did I mention it eats performance?  While we use it heavily for editor GUI development, we consider it unusable in a game runtime environment.

Unity 1.0 GUITexture and GUIText on the other hand are simple to layout and use, and performant, but not nearly feature complete.  I’ve worked with sprite based solutions as well, but hate the frequent pixel imperfect rendering and aliasing issues – along with the inability to display Unity’s super-cool dynamic fonts – essential for the display of asian character sets.  Sidenote to devs at Unity – Feature requests here: Please expose the UVs of dynamic fonts for consumption by alternate UI display libraries.

What we really needed, was the simplicity of 1.0 GUI layouts – with the power of Unity GUI 2.0.

Enter my most recent custom GUI layout solution, built entirely on top of 1.0 GUITexture and GUIText.  This system could easily support alternative rendering methods, such as a sprite system, however, I’ve chosen to use 1.0 GUI.  Without further ado:

Unity GUI UITransform
Unity UI, herpa derp!

 

Continue reading “Building a better UI workflow in Unity”