【基础】Unity中背景、3D object、NGUI控件共存

大部分U3D的游戏开发中都需要用NGUI这款界面控件,NGUI如何和3D物体共存是刚使用U3D时最常问的问题。

笔者在当前的项目中还需要加入一个背景图片,因此这里将方法统一讲一下,层次结构需求是:背景图片(底)——3D物体(中)——NGUI控件(顶)

以下是过程:

1.先来考虑3D物体和NGUI的共存,那么首先New一个场景

技术分享

 

2.先不管Main Camera,我们来设置NGUI部分,Create一个2D UI,再拖一个NGUI的Button进去。

Create一个Cube表示场景中的3D物体,为了层次清晰,我们把Cube放到Main Camera中,Main Camera下都放3D Object, UI Root下都是NGUI控件。

然后再打一个光,让3D物体清晰点,效果如下:

技术分享

 

3. 现在乍一看似乎效果还不错,但是会发现如果NGUI的面板也处于Main Camera的视野中,就会看到两个Button,因此我们设置一下Layer, 让UI Root在UI层, MainCamera下的保持在Default即可

技术分享

然后将Main Camera的Culling Mask中的UI层去掉,这样Main Camera就看不到UI层的NGUI控件了,NGUI控件只让其自带的Camera来Render,另外方便之后的设置,将Main Camera的Clear Flags设置成Depth only,这样摄像机的层次结构就可以出来了

技术分享

3D物体是在中间层,因此这里Main Camera的Depth设置成0,UI Root中的Camera Depth设为1(最顶层),Depth就是渲染的顺序,越大越后渲染。

技术分享技术分享

至此,3D物体和NGUI控件已经共存合理了,移动下3D物体可以发现NGUI控件始终盖在上面

 

4. 接下来再设置背景图片,再create一个Camera,命名为bgCamera,再新建一个layer, bg层(如何新建layer是基本操作这里就不讲了),将bgCamera划入bg层

技术分享

 

5.create一个panel,用来之后做背景图片,调节位置角度(在bgCamera的视野范围内),同样划入bg Layer,并且放到bgCamera下

技术分享

 

6.接下来类似的设置下bgCamera

 技术分享

depth设为-1(最底层)

技术分享

 

7.此时多了一个bg层,记得去Main Camera那里将bg层也去掉

技术分享

 

8.至此,场景上的设置就结束了,那么要有一个背景,而往往背景是需要动态捕获屏幕分辨率从而来填满整个界面的,因此这里笔者采用脚本添加的方式,在plane上添加一个新脚本BG.cs,脚本内容如下:

 1 using UnityEngine;
 2 using System.Collections;
 3 
 4 public class BG : MonoBehaviour {
 5         //背景贴图
 6         public Texture2D bgTexture;
 7     // Use this for initialization
 8     void Start () {
 9         gameObject.AddComponent<GUITexture>();
10     }
11     
12     // Update is called once per frame
13     void Update () {
14         guiTexture.texture = bgTexture;
15         transform.localScale = new Vector3(0, 0, 0);
16         transform.position = new Vector3(0, 0, 0);
17         guiTexture.pixelInset = new Rect(0, 0, Screen.width, Screen.height);
18     }
19 }

然后将需要的贴图赋给这个公共变量

技术分享

 

9.运行一下看看效果:

技术分享

 

10.效果完成了, 最后再调整一个细节,就是多个camera上都绑定了一个Audio Listener 和Flare Layer, 只需留下一个即可,可以选择将bgCamera和UI Root下Camera的 这两个勾去掉

技术分享

 

大功告成了,呼呼,看起来比较长,其实只要理解了Depth渲染的理念,就很容易设置了,比较基础的讲解,有不明白的朋友也可以在下面评论,笔者会抽空回答,谢谢支持!

 

                                                                                                                                                                                                           Cowill

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。