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

2025-10-05 01:24:36

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如何不被遮挡

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

 

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

 

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

 

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

 

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

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢