目录
1.Sorting LayerID 与Order in Layer
前言
最近在做项目的过程中,发现项目中的部分3d模型会被粒子特效所遮挡,这并不是笔者想要的效果,于是经过一番面向百度编程,了解到了一些解决方案,本篇博客就记录一下所学到的新知识,如果有错误之处,还望各位读者朋友指正。
一、项目需求
最近在做项目的过程中,发现项目中的部分3d模型会被粒子特效所遮挡,这并不是笔者想要的效果,于是经过一番面向百度编程,了解到了一些解决方案,本篇博客就记录一下所学到的新知识,如果有错误之处,还望各位读者朋友指正。
这样的需求看起来非常绕,我们直接通过下图进行直观理解:

通过该图我们就可以发现,要实现这样的需求就要求我们需要提前做好渲染层级的规划,避免层级间的相互影响。我们主要会通过设置Camera的Clear Flags、Culling Mask、Depth和Canvas的Sorting Layer、Order in Layer,以及Particle System中Renderer的Sorting Layer ID、Order in Layer进行处理。
我们可以通过以3d模型为中点将上面的需求分为3个部分进行处理,第一部分是背景、UI、粒子特效、UI,第二部分则是3d模型,第三部分是UI、粒子特效、UI。
二、Camera
1.Clear Flags
在一般的3d游戏中,我们通常会为场景和UI分别设置不同的摄像机,分别用来显示场景与UI。这里我们将场景摄像机用来显示3D模型,首先我们将其Clear Flags设置为Depth only,之后我们新建一个Camera,命名为UICamera0,同样将其Clear Flags设置为Depth only。
场景摄像机:

UICamera0:

此处Camera的Depth越大,该摄像机渲染的画面会显示在越上层,会将Depth比它小的摄像机的渲染画面覆盖。。
2.Culling Mask
Culling Mask设置的目的是可以使摄像机只渲染选中的Layer对象层。这里我们添加一个Canvas,命名为Canvas0,并向其中添加Image,命名为Background,做为最底层背景图。将Canvas0的Render Mode设置为Screen Space-Camera,并将UICamera0赋给Render Camera。注意此时UICamera0的Projection应设置为Orthographic(正交模式),避免近大远小的现象。

之后,我们通过添加不同的Layer来让不同的Camera渲染相应的对象层。此处我们使用默认的UI Layer来处理第一部分的背景、UI、粒子特效、UI,添加Model Layer来处理3d模型,添加UI1 Layer来处理第三部分的UI、粒子特效、UI。如下图添加两个Layer:

&nb

最低0.47元/天 解锁文章
8214

被折叠的 条评论
为什么被折叠?



