这里赶紧来看看,Unity如何设置图层的顺序。
1、首先复现问题,在场景中有一个Canvas游戏物体,其Render Mode 是World Space。
2、在场景运行之后,可以看到深度缓存是起作用的,该Canvas可以被部分或者全部遮挡。
3、简单的做法是用多个摄像机。以使用第一人称控制器为例,给FirstPersonCharacter再创建相机子对象,并调节Transform使得该相机和控制器的相机重合。
4、接着添加Layer。可以选择该相机,点击右上角layer,点击Add Layer。
5、在这里,添加一个名为WorldSpaceUI的Layer,留作后面使用。
6、选中创建的WorldSpaceUICamera相机物体,设置其Cleat Flags为Depth Only(把深度缓存清理掉),设置culling Mask为WorldSpaceUI(刚刚创建的Layer)。
7、最终效果如图所示。画面的渲染是先渲染场景,然后清除深度缓存,然后渲染Canvas所在的WorldSpaceUI层。目标达成。
在Unity中制作2D游戏,前后遮挡关系总是让我很头疼。在PS里面有图层的概念,上面一层永远在下面一层的上面。然而Unity对于Sprite的渲染顺序很奇怪,是相机当前位置,到Sprite中心点的直线距离。距离越近,就越后渲染。