关注

如何强制我的多个相机按照特定顺序进行渲染?

问题

  • 有多个相机,但是需要它们按照特定顺序渲染和更新。

原因

在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之间的版本
  • 更多信息请参阅下方链接
这篇文章有帮助吗?
0 人中有 0 人觉得有帮助
还有其它问题?提交请求

0 评论

登录写评论。