手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

Unity 2018 世界坐标Canvas如何不被遮挡

时间:2024-10-12 02:20:16

1、首先复现问题,在场景中有一个Canvas游戏物体,其Render Mode 是World Space。

Unity 2018 世界坐标Canvas如何不被遮挡

2、在场景运行之后,可以看到深度缓存是起作用的,该Canvas可以被部分或者全部遮挡。

Unity 2018 世界坐标Canvas如何不被遮挡

3、简单的做法是用多个摄像机。以使用第一人称控制器为例,给FirstPersonCharacter再创建相机子对象,并调节Transform使得该相机和控制器的相机重合。

Unity 2018 世界坐标Canvas如何不被遮挡

4、接着添加Layer。可以选择该相机,点击右上角layer,点击Add Layer。

Unity 2018 世界坐标Canvas如何不被遮挡

5、在这里,添加一个名为WorldSpaceUI的Layer,留作后面使用。

Unity 2018 世界坐标Canvas如何不被遮挡

6、选中创建的WorldSpaceUICamera相机物体,设置其Cleat Flags为Depth Only(把深度缓存清理掉),设置culling Mask为WorldSpaceUI(刚刚创建的Layer)。

Unity 2018 世界坐标Canvas如何不被遮挡

7、另外,也需要设置该Camera的Depth为1。Depth越大,渲染越靠后。这里目的是Canvas的渲染希望在场景渲染完毕之后再做。

Unity 2018 世界坐标Canvas如何不被遮挡

8、接着,选中第一人称控制器原本的相机游戏物体,其Clear Flags不用改动,其Culling Mask中的WorldSpaceUI取消掉(前诹鬃蛭镲面说过,WorldSpaceUI Layer用新创建的相机渲染)。

Unity 2018 世界坐标Canvas如何不被遮挡

9、类似的,也设置该相机的depth值,这里设置为0。这个相机会先渲染。

Unity 2018 世界坐标Canvas如何不被遮挡

10、然后,再选中场景中的Canvas游戏物体,将其Layer修改为WorldSpaceUI,并应用于所有子物体。

Unity 2018 世界坐标Canvas如何不被遮挡

11、最终效果如图所示。画面的渲染是先渲染场景,然后清除深度缓存,然后渲染Canvas所在的WorldSpaceUI层。目标达成。

Unity 2018 世界坐标Canvas如何不被遮挡
© 手抄报圈