精华内容
下载资源
问答
  • Unity渲染层级

    2020-11-02 19:18:15
    Unity渲染层级有三种:Camera、Sorting layer、Order in layer 一般创建新场景的摄像机都是为Camera层,而且初始的depth为-1,在同一个摄像机下,也就是在Camera下,层级的优先级就需要根据Sorting layer来进行...

    Unity的渲染层级有三种:Camera、Sorting layer、Order in layer
    在这里插入图片描述
    一般创建新场景的摄像机都是为Camera层,而且初始的depth为-1,在同一个摄像机下,也就是在Camera下,层级的优先级就需要根据Sorting layer来进行渲染。
    在这里插入图片描述
    就如上图,一般初创的Object的Sorting layer都是Default数值,这里的layer是自己定义的,这也就是说在Sorting layer里面可以定义自己的层级,而且这个定义的层级默认是比Default层级高的。如果不同的物体(Object)都是在相同的Sorting layer下的话,假设就像图片里面的一样,在相同的layer下面,那么这个时候就要根据Order in Layer上面进行比较了,Order in Layer的数值越大,那么层级就越高,优先级就越高。
    除此之外,还有一种叫做Overlay,这个代表的意思是超过所有层,永远放在层级最高的地方(也就是放在最上层)
    在这里插入图片描述
    除去讲渲染层级之外,还要补充说明一下渲染层级和layer的不同,看下面的图片:
    在这里插入图片描述
    这是摄像机的Culling Mask属性,再看下图:
    在这里插入图片描述
    会发现这里的layer显示的东西和上面Camera的Culling Mask属性显示的东西大多是一样的,那么这里的layer表示的是什么,这里表示的不是渲染层级,而是Unity中摄像机可以显示的层,可以理解为一种标记,如果自身所带的标记在摄像机中没有打钩,那么你这个Object在工作的界面是可以看到的,但是在显示界面是看不到的,就像下面这张图所显示的那样:
    在这里插入图片描述
    我先是自己新建的一个layer,这里是指Culling Mask属性中的layer数值,然后在Camera中将我自行定义的layer的√划掉,然后就会产生如上图这样的结果,所以要特别注意layer和渲染层级的不同。

    展开全文
  • Unity渲染层级关系

    千次阅读 2018-01-24 11:35:33
    一、条件:Render Mode都是Screen Space-Camera时的渲染顺序 1.遵循刷油漆规则 2.依次由Render Camera的Depth值、Sorting Layer先后顺序、Order in Layer值决定 Render Camera不同时,由Render Camera的...

    第一:UGUI中:

    一、条件:Render Mode都是Screen Space-Camera时的渲染顺序

    1.遵循刷油漆规则

    2.依次由Render Camera的Depth值、Sorting  Layer先后顺序、Order in Layer值决定

    Render Camera不同时,由Render Camera的Depth决定

    Render Camera相同时,由Sorting Layer先后顺序决定

    Render Camera相同时,Sorting Layer相同,由Order in Layer值决定。


    二、1.OverLay模式,永远覆盖在其他物体之上。出现在最上面。不受摄像机的Depth值影响。

    2.有多个摄像机时,由摄像机的Depth值决定

    3.只有一个摄像机时,由距离和方向决定World模式和Camera模式、它们的渲染结果 可前、可后、可穿插。


    三、条件:同一个Canvas下,UI对象在Hierarchy窗口中越往上越先渲染,越往下越后渲染。

    第二:所有的渲染:

    Unity中的渲染顺序自上而下大致分为三层。 最高层为Camera层,可以在Camera的depth那里设置,设置之后,图形的渲染顺序就是先绘制depth低的相机下的物体,再绘制depth高的相机下的物体,也就是说,depth高的相机会覆盖depth低的相机(具体的覆盖关系有don't clear, solid color等等几种)

    比Camera层稍低一层的是sorting layer层, 随便找一个可以设置sorting layer的地方,选择sorting layer,点添加按钮,就可以看到当前所有的sorting layer,并且可以更改sorting layer的顺序,排位靠后的sorting layer会覆盖排位靠前的sorting layer。 设置好sorting layer的相互关系之后,就可以给任何一个继承于Renderer类,或者有renderer的子类作为field的对象设置sorting layer了。 注意这些sorting layer的遮挡关系是在同一个camera的层级下的。 不同camera下的renderer渲染顺序以camera的depth为准。 有的component的sorting layer可以直接在unity editor里面设置,比如Sprite Renderer。 有的则需要用代码来设置,比如设置Particle system的sorting layer, 就需要在代码中取到 ParticleSystem.Renderer.SortingLayer 来进行设置。

    比sorting layer再低一层的是sorting order, 这个数字指代的是在同一个sorting layer下的渲染顺序,用法很明显就不赘述了。

    需要注意不要混淆的是gameobject的layer,和renderer的sorting layer。 gameObject的layer个人理解是一个逻辑上的分层,用于camera的culling mask等。 而renderer的sorting layer则用于渲染。只有继承与renderer或者有renderer作为filed的component才需要设置sorting layer

    另外需要指出的是,常用的NGUI的widget depth其本质也是一个sorting layer下的sorting order。 NGUI好像用的是一个叫做“UI"的sorting layer。 由此大家如果有需要,也可以自己取Hack NGUI的代码,把NGUI的sorting layer暴露出来供自己定制。

    简单总结一下,决定Unity渲染关系的层级顺序是:

    Camera         //在不同的Camera中,渲染顺序由Depth决定,depth值越低,越先渲染,值越高,

    越后渲染。


    sorting layer    //在相同的Camera下,越在上层,越先渲染,越在下层,越后渲染。

    sorting order    //在相同的 sorting layer下,值越小,越先渲染,值越大,越后渲染。


    展开全文
  • Unity2D 渲染层级

    千次阅读 2018-02-13 17:58:41
    Unity 渲染层级 渲染效果:谁被在下面,谁在上面。 -渲染层级 camera(摄像机) Depth(值越高物体越在上面) 在同一个camera中 sorting layer(越在下面的sorting layer 越在上面) 例如:player ...

    Unity 渲染层级

    • 渲染效果:谁被在下面,谁在上面。

    -渲染层级

    1. camera(摄像机)
      Depth(值越高物体越在上面)

    2. 在同一个camera中
      sorting layer(越在下面的sorting layer 越在上面)
      player 层物体比default层 显示在上方
      例如:player 层物体显示在default层物体的上面
    3. 最后 order in layer(谁的数值大,谁在上方)
    4. 一般设计思路:
      第一步、 对camera进行分层(l利用Culling Mask 属性设置显示的内容的分类)

      第二步、设置同一个camera中sort layer
      第三步、设置sort layer中的order in layer

    5. 分析上图设计思路:
      1、利用main camera显示后面的游戏物体(小猪,小鸟,背景,弹弓)
      将小猪,小鸟,弹弓属性sort layer设置成player ,背景设置成default
      左弹弓的order in layer的值 比小鸟的order in layer值大。
      2、UI 新建camera 显示UI. UI背景Canvas的属性sort layer设置成default。
      粒子系统的属性 sort layer 设置成player。
      结果如图:这里写图片描述

    展开全文
  • unity 渲染层级详解

    千次阅读 2019-02-25 14:08:39
    Camera是unity中最优先的渲染顺序控制。depth越大,渲染顺序越靠后。  2、Sorting Layer 在Tags & Layers设置中可见 3、Order In Layer 相对于Sorting Layer的子排序,用这个值做比较时只有都在同一...

    1  Camera 
    Camera是unity中最优先的渲染顺序控制。depth越大,渲染顺序越靠后。 

    2、Sorting Layer
    在Tags & Layers设置中可见

    3、Order In Layer
    相对于Sorting Layer的子排序,用这个值做比较时只有都在同一层时才有效。
    4、RenderQueue
    Shader中对Tags设置的“Queue”。

    当Sorting Layer和Order In Layer相同时
    RenderQueue小的先进渲染管线。

    当Sorting Layer和Order In Layer不相同时!
    当两个材质使用了不同的RenderQueue,且这两个RenderQueue都在[0~2500]或[2501~5000]时,SortingLayer和OrderInLayer的排序生效。

    当两个材质使用了不同的RenderQueue,且这两个RenderQueue分别在[0~2500]和[2501~5000]时,则一定会按照RenderQueue绘制,无视SortingLayer、OrderInLayer的排序


    5、 MeshRenderer 和SpriteRenderer 都是继承于 Renderer 的组件 
    它们的 sorting 和 orderinlayer 都是暴露出来的属性  可以在属性视图修改
    模型蒙皮  skinned mesh render 虽然也继承了 Renderer 但在属性视图没有出现该属性    一般只能更改蒙皮的shader  RenderQueue  调整默认sorting layer 和 Orderinlayer下 和其他物体的层级
    所以一般设置材质的renderQueue或直接在shader中设置。

    在ShaderLab中,有4个提前定义好的render queue,你可以设置更多的在他们之间的值:
    Background :表示渲染在任何物体之前 
    Geometry(default):渲染大多数几何物体所用的render queue 
    AlphaTest:用于alpha测试 
    Transparent:用于渲染半透明物体 
    Overlay:渲染所有物体之上


    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    如果混用 2DUI 和 模型  模型又穿插在两个 NGUI panle中间  不通过增加摄像机数量来解决的话应该怎么办:
    默认情况下 游戏中只有一个默认的 sorting layer , 和一个默认的 OrderInLayer 。 所有物体都在一个 sorting layer 和
    OrderInLayer 下面  ,
    这时候设置渲染顺序的方式就是通过更改 RenderQueue ,较小的先渲染  ,   Ngui panle 会默认根据drawcall 优化操作 设置当前panle下的ui RenderQueue (一般是3000起)。

     

    Automatic:由NGUI自动生成 
    StartAt:手动设置一个值 
    Explicit:同一个panel下的RenderQueue的值相同

    看代码可以理解一下,UIPanel.cs 

    而使用 skinned mesh render , 则是更改使用材质处shader 的 skinned mesh render ,  设置值在两个panle  RenderQueue 之间就行了。

    如果是使用龙骨和spine 动画还有粒子系统的话, 层级控制就只能在默认 sorting layer 下更改 龙骨、 spine、粒子系统的 orderinlayer ,    再打开 ngui panle 上的 oder in layer 选项,   通过设置3者之间的oder in layer值调整顺序就好了 。

    再加上 使用skinned mesh render 蒙皮的模型的话,在开启ngui panle的 oder in layer 后,  由于模型默认在最低的 order in layer 下,此时 ,再怎么调整模型的 shader RenderQueue 模型都不会渲染到最上面,解决办法是:
    通过脚本获取 模型 skinned mesh render 的  oderinlayer 参数,  并修改它的值穿插在各层之间 

    (1 性能上可能增加drawCall 还未具体测试过 , 模型是不是这样修改渲染层级我也不知道 ,没怎么用过 ,这只是我自己的解决方案。 2 还于到一个情况  ,如果Ngui的panle  打开了Oder in layer 选项而又 设值为0 的情况下  ,该panle下的对象 可能渲染到最上层,原因可能要看代码了)。

    展开全文
  • UGUI的UGUI渲染层级层深(layer)问题

    千次阅读 2020-06-18 18:27:42
    1.先来说说我们的问题:由于unity渲染物体时是从上到下直接渲染的,这就导致了渲染出来的效果和我们预期的不一致,因此必须设置层级,指定渲染的先后顺序(层级低的先渲染)才行。 那么问题来了,UGUII并没有NGUI...
  • 用代码设置UGUI渲染无非和三个API有关: 1.SetAsFirstSibling(); 2.SetAsLastSibling();...SetSiblingIndex(n)是设置层级,从0开始到childcount -1 当n为0时,其效果与SetAsFirstSibling();相..
  • unity-渲染层级关系Camera层级在同一Camera下,Sorting LayerOrder in Layer层级Layer层级小结 渲染主要是针对Game窗口下显示的内容,类似于画板,先画一层后画一层,后画的可以把之前的一层给覆盖掉。于是unity有...
  • Unity中的层级以及渲染顺序

    万次阅读 2017-10-17 21:51:19
    在使用unity3d开发游戏项目时,层级的问题往往伴随着UI的开发,而在引入了3D模型、粒子特效后,层级的问题就变得有些扑朔迷离了,甚至会牵扯到Unity渲染顺序。本篇主要从UGUI的角度出发,浅析UGUI中影响层级的因素...
  • Unity更改渲染层级代码

    千次阅读 2015-10-14 14:15:36
    粒子特效的默认渲染层级比UI的渲染层级低。 UI默认的渲染层级为3000,把粒子特效的渲染层级改到3000以上就可以了。 public static void SetMaterialRenderQueue(Transform trans, int renderQueue) {...
  • unity中怎么动态改变相机渲染层级

    千次阅读 2019-08-27 18:53:52
    我们大多数都知道怎样手动改变相机的渲染层级,但是对于动态的改变还不是很了解。下面是一个小例子介绍怎样动态的改变渲染层级。 这个例子实现的功能是点击鼠标左键,相机不对与Cube进行渲染。点击鼠标右键相机对...
  • Unity3D渲染层级

    2018-05-12 13:15:19
    渲染层级的优先级(从上往下降序排列)Camera sorting layer (类似不同的文件夹)sorting order(类似文件夹下的文件 数值越大越后渲染 例:2>1 所以当2和1 重叠放置的时候 2覆盖1 2在1上边 你可以看见2 ...
  • Unity2D游戏层级渲染问题

    千次阅读 2019-01-05 14:44:37
    解决图片层叠在一起时的渲染问题,一般情况下,我们只需要用到Order int Layer属性,该值越大,越后渲染,如下图 图中树的Sort in Layer属性值为20,小山的值为10,数值更大后渲染,所以树显示在山的前面,问题来了...
  • 相信点到这里进来的老哥们,八成也是遇到了我这样的问题: ...这里RawImage用来渲染特效,可以很完美的利用UGUI自己的层级关系,显示在Image A上面,Image B下面。 原理不做赘述,主要用到了Raw Image和Camera的Targ
  • unity中的层级问题

    千次阅读 2020-06-30 09:47:19
    1.当UI界面中有粒子特效时,给UI添加Canvas,不会影响粒子的...2.UI中添加贴图特效时,UI中的Canvas的Order in Layer层级不能太高,太高会使使贴图的特效看不见,如果硬是要这样,那只能修改粒子的渲染队列数值。 ...
  • unity 3d ui渲染层次

    千次阅读 2018-07-05 11:41:36
    使用world spcace canvas,直接将下边image的材质替换成一个overlay的材质并不能够覆盖在所有物体之上 还需要修改canvas本身的SortingLayer 另外如果透明材质 虽然有transparent的设置 但是没有设置blend的方式的化 ...
  • http://www.unity.5helpyou.com/3251.html ...最近连续遇到了几个绘制图像之间相互遮挡关系不正确的问题,网上查找的信息比较凌乱,所以这里就把自己解决问题中总结的经验记录下来。...Unity中的渲染顺序自上而
  • camera.cullingMask = -1; //对应 everything camera.cullingMask = 0; //对应 nothing ... // 渲染除去层x的所有层 camera.cullingMask &= ~(1 << x); // 在原来的基础上关闭x层 ...
  • B1.transform.SetSiblingIndex(2); B2.transform.SetSiblingIndex(1); B3.transform.SetSiblingIndex(0); B1,B2,B3在同一层级
  • UGUI系列——UI渲染层级

    千次阅读 2019-02-09 13:23:41
    UI渲染层级实际简单理解就是我们时间看到的UI遮挡关系,在unity中有多种方式可以控制UI的渲染顺序 在unity中层级通常都是用数字表示的比如相机的Depth,Canvas的Order Layer,它们的参数都是数字,那么首先,我们要...
  • 在3D场景中,想调整TextMeshPro的渲染层级 使用自带的 Sorting Layer进行设置不能用,需要新添加Sorting Group 进行设置才行。 前提是:与SpriteRender 进行渲染排顺序时。 具体如下: 管网有对 SortingLayer 具体...
  • 渲染层级关系 渲染层级: 1、Camera Depth 先绘制depth低的物体 默认主摄像机Depth为-1,后在Hierarchy创建Camera的Depth默认比主摄像机高,所以Scene中后创建的摄像机的投影画面会遮挡住主摄像机 2、同一个...
  • Unity层级

    2020-10-30 09:18:12
    摄像机可以指明渲染层级以渲染场景中的部分物体。灯光可以指明照射层级以照亮部分物体(可以指定照亮某些层级的物体以显示阴影)。层级还能用于设置物理碰撞关系。 层级顺序:Unity中的渲染顺序自上而下大致分为三层。...
  • Unity&NGUI渲染层级

    千次阅读 2017-11-08 14:00:02
    尊重原创,转载请在文首注明... 项目中经常遇到层级的显示问题,来总结下。 一,Unity 按优先级从高到低排列: 1,Camera.depth depth小的先渲染。 2,Renderer.sortingLayerID sortingLayerID为基类Rend
  • Unity学习笔记 由于项目需要,在人物进行成长大变身的时候需要相机不去显示场地的内容,这样能让用户集中注意力在我们需要凸显的地方(个人认为) 于是乎在做了一个个人感觉还可以的简单特效之后放到了项目里,发现了一些...
  • NGUI的渲染层级顺序是由UIPanel来确定的,看源码我们得知UIPanel下的所有UIWidget的RenderQueue是递增的。 而Unity的物体,如果是Transparent渲染的话,会和NGUI一样,这就有可能处于同一层级导致随机前后的情况。 ...
  • 最高层为Camera层,可以在Camera的depth那里设置设置之后,图形的渲染顺序就是先绘制depth低的相机下的物体,再绘制depth高的相机下的物体,也就是说,depth高的相机会覆盖depth低的相机(具体...
  • 参考方案:NGUI中穿插粒子或者mesh渲染层级 在UIpanel.cs/UIDrawCall.cs/UIWidget中添加 onRenderQueueChanged回调的位置参考中已经给出了,此处不赘述了 UITextureRecombine.cs /* *2018-07-20 19:49:00...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,276
精华内容 1,310
关键字:

unity设置渲染层级