Unity中的几种层级关系优先级总结

作者: koo叔 分类: Unity3D 发布时间: 2018-03-07 23:29 编辑

前言

在项目中,我们经常需要处理显示对象的层级关系或规划层级结构,那么Unity中主要有哪些主要的层级关系及他们的优先级是怎么样的呢?

Camera

首先是Camera,Camera的depth值越大的在上面,越小的在下面,比如场景有一个相机,UI层有一个相机,那么我们就可以将场景相机的Depth设置成0,UI相机的Depth设置成1。UI就会高于场景显示了。

Sorting Layers

如果Camera相同,那接下来就看Sorting Layers,Sorting Layers是通过Renderer的sortingLayerName属性设置的,那么这个Sorting Layers的名字又是在哪设置,以及名字之间的顺序是怎么定的呢?这个Soring Layers是在Edit->ProjectSettings->Tags&Layers中设置的,如图:这里设置了Default和Effect两个Layers,Effect的层级比Default的高。
image
可以通过代码设置render.sortingLayerName="Effect",如果在粒子系统中看,可以看到Render项的Sorting Layers下拉表单中会列出所有的Sorting Layers的名字

sortingOrder

如果Camera相同,SortingLayers相同的情况下呢?

那就要比较soring Order了,soringOrder也是Render的一个属性,这个order是设置一个数字,数字越大,越在上面显示。

renderQueue

如果上述几项都相同,那就要看renderQueue了,renderQueure是Material的一个属性,其实就是Shader中的renderQueue,这个也是一个int属性,数值越大,越在上面。

方案

根据上面的层级,我写了一个万能层级调整脚本,如果遇到层级遮挡问题不好解决时,可以试着用一下,这个脚本也能解决粒子的层级(注:此脚本使用不当会增加drawCall,所以不到万不得已最好不用,更不要滥用)。脚本链接地址点我

总结

以上就是Unity中层级组织的总结,如遇到层级问题,可以按上面几项,排查思考一下,一般都能解决

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

你的email不会被公开。必填项已用*标注

更多阅读
标签云