I see two main ways of implementing GUIs in Unity:
- Using the built-in
- Using a separate Camera and with Quads to make the various controls.
What is the best practice regarding this? Is it completely dependent on application?
Which method is less performance-heavy, especially considering mobile devices?
You could also download the latest Unity 4.6 stable beta and use the new UI system. Unity Editor Beta Releases
Overview: Unity 4.6 - New UI System overview - YouTube
You can also use the unity animation system to make nice transitions and fade-in or fade-out effects.
For instance, I see some advantages and disadvantages of the 3D method:
- Can use
AnimatorControllers to give excellent effects like fade-ins and fade-outs
- Can do more advanced things, such as radial controls, easier than with the built-in GUI system
- Can incorporate 3D models into the GUI if you wish
- Can give perspective, shadows, etc. very easily
- Scripting becomes slightly messy, as either each control needs to have its own script to control its behaviour, or a very monolithic controller class with handles to each of its controls has to be written.
- Dynamic lists, which could easily be handled by
ScrollViews become a little more tricky