I gather that we need to use a single texture for all meshes in a scene to keep draw calls down.
That’s fine for meshes, but since we cannot map textures used in the GUITexture layer, each GUITexture element will inescapably use its own discrete texture.
So, does this mean that GUITextures incur a big performance hit in Unity iPhone games? And, if so, is there a recomended alternative or optimization that we can use for them?
Every separate mesh uses a draw call, whether it shares a texture with other meshes or not. The major benefit of sharing a single texture is that the meshes can then be combined, assuming they don’t need to be moved individually. Lots of GUITextures will result in lots of draw calls, yes. As for alternatives, I guess it depends on what you’re doing.
So, it it better to combine the meshes in the 3D app used to create them, or using a script in Unity?
And as for the GUITexture layer, is there a general rule of thumb speaking as to when they begin to exact too great a cost (i.e. like the “stay under 7k polys” rule)?
So, optimally, I should model all of my objects using a single texture, if possible.
Then, for dynamically placed or instanced 3D stuff, after I’ve done all of my instancing and placement in Unity, I should run the combine-meshes script to combine them all.
Also, does each GUITexture incur single draw call?