集成NGUI

在实际的项目中,经常会使用NGUI来制作UI,用Main Camera来表现3D,但是NGUI的Camer的投射是正交视图而非透视,它绑定UICamer的脚本而且它的Tag默认是Untagged

UICamera(UI相机)

Unity3D MainCamera和NGUI UICamera的小插曲-LMLPHP

MainCamera(主相机)

Unity3D MainCamera和NGUI UICamera的小插曲-LMLPHP

遇到的问题

搭建完场景之后运行,在Game视图只有NGUI的渲染,而Main Camer渲染的完全看不到,调Layer及Culling Mask都是没有出现Main Camera的渲染

Unity3D MainCamera和NGUI UICamera的小插曲-LMLPHP

解决方法

1. 修改两个camera的clear flags为depth only

2.设置UICamera.depth>MainCamera.depth

对比两个Camera的异同,刚开始没看清楚UICamera的Clear Flags是Skybox

Unity3D MainCamera和NGUI UICamera的小插曲-LMLPHP

想了想之后,Unity手册上有讲解Camera.Clear Flags的作用。

Clear Flags

Clear Flags 确定了屏幕哪些部分将被清除,这是为了方便使用多个摄像机渲染不同的游戏元素,每个相机在渲染时都会存储颜色和深度信息。

屏幕的未绘制部分是空的,默认情况下会显示天空盒。

当你使用多个相机时,每一个相机都将自己的颜色和深度信息存储在缓冲区中,还将积累每个相机大量的的渲染数据。当场景中任何特定的相机进行渲染时,你可以设定清除标记来清除缓冲区信息的不同集合

camera.clear flags=Solid Color (纯色)表示屏幕上的任何空的部分将显示当前相机的背景颜色。

资料参考:Unity 3D-- 摄像机Clear Flags和Culling Mask属性用途详解

文档资料

摄像机 Camera

05-04 01:18