Unity3D NGUI 2D背景图片的实现

使用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);


你可能感兴趣的:(Unity3D,NGUI,游戏开发)