Unity3D MainCamera和NGUI UICamera的小插曲
集成NGUI
在实际的项目中,经常会使用NGUI来制作UI,用Main Camera来表现3D,但是NGUI的Camer的投射是正交视图而非透视,它绑定UICamer的脚本而且它的Tag默认是Untagged
UICamera(UI相机)
MainCamera(主相机)
遇到的问题
搭建完场景之后运行,在Game视图只有NGUI的渲染,而Main Camer渲染的完全看不到,调Layer及Culling Mask都是没有出现Main Camera的渲染
解决方法
1. 修改两个camera的clear flags为depth only
2.设置UICamera.depth>MainCamera.depth
对比两个Camera的异同,刚开始没看清楚UICamera的Clear Flags是Skybox
想了想之后,Unity手册上有讲解Camera.Clear Flags的作用。
Clear Flags
Clear Flags 确定了屏幕哪些部分将被清除,这是为了方便使用多个摄像机渲染不同的游戏元素,每个相机在渲染时都会存储颜色和深度信息。
屏幕的未绘制部分是空的,默认情况下会显示天空盒。
当你使用多个相机时,每一个相机都将自己的颜色和深度信息存储在缓冲区中,还将积累每个相机大量的的渲染数据。当场景中任何特定的相机进行渲染时,你可以设定清除标记来清除缓冲区信息的不同集合
camera.clear flags=Solid Color (纯色)表示屏幕上的任何空的部分将显示当前相机的背景颜色。
资料参考:Unity 3D-- 摄像机Clear Flags和Culling Mask属性用途详解
文档资料