使用GUI是只能对于GuiTexutre和GuiText之类的Gui画出来的地进行前后布局。所以不可能使用Gui实现与Camera进行显示先后的调整。达到2D背景的目的。
使用NGUI的UISprite相关的控件,效果和GUI是一样的,虽然NGUI空间之间可以调节前后关系。但是相对于3D对象,都会显示在屏幕的最前方。
使用NGUI的UITexture.配合Camera可以实现显示的先后。2D图片作为背景图片显示。
这里UITexture只能指定Material从而使用Material的Texture作为图片资源。而不能像UISprite一样使用UIAtlas图包作为资源引用。这里可能会导致我们资源凌乱,效率低下。所以我们可以采用如下形式,使得UITexture的现实图片也来自UIAtlas。
中间涉及到了Texture到Texture2D的转换。已经从UIAtlas获取图片信息的方法。
UIAtlas Atals; UITexture uiTexture; Texture2D t2D, newT2d; t2D = Atals.texture as Texture2D; UIAtlas.Sprite sprite = Atlas.GetSprite(spriteName); // Sprite的名字 newT2d = new Texture2D((int)(sprite.inner.width), (int)(sprite.inner.height)); nweT2d.SetPixels( t2d.GetPixels((int)(sprite.inner.xMin), (int)(sprite.inner.yMin) ,(int)(sprite.inner.width), (int)(sprite.inner.height)) ); newT2d.Apply(); uiTexture.material.mainTexure = newT2d; uiTexture.transorm.localScale = new Vector3(sprite.inner.width, sprite.inner.height, 0.0f);