【Unity】UGUI中Camera Depth,Canvas Sorting Layer、Order in Layer与Particle System渲染层级分析

目录

 

前言

一、项目需求

二、Camera

1.Clear Flags

2.Culling Mask

 三、Canvas

1.Sorting Layer

2.Order in Layer

四、Particle System

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值