GUI Performance Decision

This is my first post so apologies in advance if I ask a dumb question.

I have read a bit in the iPhone forum about the performance of GUILayout and had a look at the GUIManager they seem to prefer over there. I probably don’t want to do an iPhone app at the moment but I am wondering whether to invest the time in learning the UnityGUI or try to get my head around the GUIManager.

I am on a bit of a learning curve as it is and I would probably have more sucess using UnityGUI but I don’t want to invest a lot of time in it if I find down the track that I need to change strategies due to performance issues.

I want to make extensive use of the GUI and envisage a fairly complex GUI with at least every letter of the alphabet used as an interactive button, text input and at least 10 - 12 additional buttons. It would need to co-exist on half of the screen with some 3D content on the other half.

The 3D content will probably be fairly basic.

Any thoughts that may help me make a decision would be greatly appreciated.

If you want maximum flexibility and performance and if you haven’t implemented anything yet, I’d suggest to go for a custom GUI system. You could implement your own logic and display the controls using either game objects with GUITexture components or a 3D sprite-based system (similar to SpriteManager).

The main drawback of GUITexture is that it doesn’t support UV seeking inside a texture which induces overhead if you need to switch active texture objects quite often.

UnityGUI is useful if you don’t need advanced functionalities (e.g. playing sounds on events) or don’t have a clear idea regarding what your GUI should look like but in my opinion it lacks a few essential features that makes the experience painful and the code messy when you finally have to implement them.

Thanks for the advice Mat. I think you are right.

I think I will have a closer look at the GUIManager that the iPhone guys are using keep their draws down. It looks pretty efficient and flexible.