NGUI's draw calls are created by panels. If you parent all of your UI to a common game object (as you normally would with NGUI -- the UIRoot at the very least), then all of your widgets should have the same UIPanel parent, resulting in only one draw call, not 40. If you have 40, then you have too many panels in the scene or you didn't use atlasing. Don't use UITextures.