From the FAQ I can read:
"For 3D UIs, however, turning the window even slightly completely changes the distance to the widgets, and makes this approach completely unsuitable. This is why "Depth" was invented: it's a fixed value that stays constant, regardless of the transform. Unfortunately there is no way to make different draw calls respect this value (different panel / atlas = different draw call), so with multiple atlases or panels, Z still needs to be used."
We are having exactly the problem described. We have a panel which has some UI textures that cannot use the main atlas but must load dynamic images. This panel is a 3D panel and as expected NGUI is not able to sort properly the large background and the smaller UI textures on top of it. The result is that the UI textures which are closer are above the main panel, but the UI textures that are further than the centre of the panel will be behind it (due to the perspective point of view).
We have 2 way to resolve the problem. The first is to render the entire panel with a 2D camera on a rendertexture and the use the texture in a big UITexture.
The second one is to use different UIPanel and different Cameras, disabling zbuffer and render the cameras in the correct order.
I would like to know if you have more insights on the issue. Thanks