问题
- 有多个相机,但是需要它们按照特定顺序渲染和更新。
原因
在Unity中,创建的新相机的深度(Depth)为零。请看下面的截图,深度显示在检视面板的默认组件上,图上已经用黄色标亮。
深度可以看做是是渲染的顺序,深度值越低,堆栈中越早被渲染。
解决方案
如果存在一个以上的相机,那么仅需要按照绘制的顺序使每个相机的深度递增即可:
相机A - 深度值为0 //首先被渲染。
相机B - 深度值为1 //第二个被渲染。
相机C - 深度值为2 //最后一个被渲染。
当使用 OnRenderImage作为图像效果时,图像效果总是直接应用在其所附加的相机之后。所以给定与上面相同的场景,如果三台相机都附加了简单的图像效果,那么渲染的顺序如下:
相机A - 深度值为0 //首先被渲染。
ImageEffect1
相机B - 深度值为1 //第二个被渲染。
ImageEffect2
相机C - 深度值为2 //最后一个被渲染。
ImageEffect3
更多信息
- 深度值可以在脚本中通过Camera.depth属性进行编辑。
- 如果两个相机的深度值相同,那么它们渲染的顺序与他们被添加到场景中的顺序相同,这种做法并不推荐,相机应始终明确地被顺序。
- 此文适用于Unity 4.x到5.x之间的版本
- 更多信息请参阅下方链接