码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-01-31 17:36:00      阅读:324      评论:0      收藏:0      [点我收藏+]

标签:

大部分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

 

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

标签:

原文地址:http://www.cnblogs.com/cowill/p/4264245.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!