ui渲染顺序 unity3d_unity 3d模型渲染顺序 - CSDN
  • Unity UI层元素渲染顺序

    千次阅读 2017-11-29 13:48:42
     百思不得解,问了同事才知道,UnityUI元素有渲染顺序的差异,后渲染的元素自然就会覆盖在上面。  于是,调整了对象列表里的元素顺序,把背景图放在了前面,效果就达到了预期。  这应该是个很小的细节,但...

        今天做项目,做了一个UI界面,但是效果感觉很怪,本来作为背景图的iamge,结果蒙在了其他控件的上面。

        百思不得解,问了同事才知道,Unity的UI元素有渲染顺序的差异,后渲染的元素自然就会覆盖在上面。

       于是,调整了对象列表里的元素顺序,把背景图放在了前面,效果就达到了预期。

       这应该是个很小的细节,但如果不了解这个的话,可能会被卡很久。特意在此记录一下

    展开全文
  • unity3d渲染顺序

    千次阅读 2018-07-13 00:00:44
    Unity中的渲染顺序自上而下大致分为三层。 最高层为Camera层,可以在Camera的depth那里设置,设置之后,图形的渲染顺序就是先绘制depth低的相机下的物体,再绘制depth高的相机下的物体,也就是说,depth高的相机会...

    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

    sorting layer

    sortingorder

    展开全文
  • Unity中的层级以及渲染顺序

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

    0x00 写在前面
    在使用unity3d开发游戏项目时,层级的问题往往伴随着UI的开发,而在引入了3D模型、粒子特效后,层级的问题就变得有些扑朔迷离了,甚至会牵扯到Unity的渲染顺序。本篇主要从UGUI的角度出发,浅析UGUI中影响层级的因素。后续会分析UI与3D对象,UI与粒子特效之间层级的关系。

    0x01 影响层级的因素
    前提条件:
    - Camera-Clear Flags
    - Canvas-Render Mode

    影响层级的因素:

    • Camera
      • depth
    • Canvas
      • Hierarchy中的排列顺序
      • sorting layer
        • order in layer
    • Shader中的RenderQueue

    0x02 Camera中的Clear Flags
    skybox
    屏幕上的空白处将会以以当前camera的skybox填充。
    solid color
    屏幕上的空白处将会以当前camera的background color填充。
    Depth only
    每次绘制前,只是清空深度缓冲区,但是并没有清空颜色缓冲区。(一般适用于多个camera的情况)
    Don’t Clear
    该模式不清除任何颜色或者深度缓存。每帧绘制在下一帧之上,造成涂片效果

    camera的clear Flags选定Don’t Clear 或者 当我们只有一个camera时选定Depth only 会出现以下涂片效果:
    涂片效果]

    参考资料:https://docs.unity3d.com/Manual/class-Camera.html

    0x03 Canvas的Render Mode
    Render Mode主要用于定义UI如何渲染于屏幕之上。通常一个Scene只需一个Canvas即可,不过Canvas自身也是支持嵌套的,默认情况下,子Canvas与父Canvas的Render Mode保持一致。
    Screen Space-Overlay
    此模式下,Canvas会被缩放以适应屏幕,然后直接渲染到屏幕上,无需任何摄像机。屏幕尺寸或者分辨率改变了,UI会自动进行缩放,UI会覆盖所有其他摄像机的画面。
    这里写图片描述
    该模式下需要特别注意:Canvas需要放在Hierarchy所有元素的顶层,否则UI可能会从视图中消失。这是Unity内置的限制。
    原文:Note: The Screen Space - Overlay canvas needs to be stored at the top level of the hierarchy. If this is not used then the UI may disappear from the view. This is a built-in limitation. Keep the Screen Space - Overlay canvas at the top level of the hierarchy to get expected results.


    Screen Space-Camera
    此模式下,Canvas会渲染于摄像机前面指定距离的一个平面上。UI在屏幕上的大小并不随此距离变化而变化(有点像正交投影)。场景中的物件可能与UI遮挡。
    [图片-Camera]


    World Space
    此模式下,UI被看作是场景中的一个平面物体。UI此时可以不朝向Camera,其他场景中的物件除了可以与UI遮挡外,还可能与UI穿插。
    [图片-World]
    参考资料:https://docs.unity3d.com/Manual/class-Canvas.html

    0x04 UI与3D物体
    通常的游戏项目会采用两个Camera,一个UICamera用于绘制UI,一个GameCamera用于绘制游戏中的3D对象。这时候就引入了新的复杂度,多个Camera如何管理,又如何协同工作的问题。不考虑3DUI的普遍情况下,UI往往位于场景中的3D模型上方。
    这里写图片描述

    GameCamera的Depth = -1,Culling Mask为everything不进行剔除操作,ClearFlags的标志为skybox,表示空白的地方以天空盒填充。


    这里写图片描述
    UICamera的Depth = 0,Culling Mask为UI,UICamera嘛盯着UI就够了。Projection一般选Orthographic就好,选择PerspectiveUI可能会出现类似透视Camera下的旋转和扭曲等奇怪的现象。去除Audio Listener是为了避免unity中2 audio listeners的报错。


    这里写图片描述
    将Canvas的Render Mode设置为Screen Space-Camera。


    最后的效果如图:
    这里写图片描述

    展开全文
  • Unity控制渲染顺序

    2019-12-31 15:21:14
    Overlay的Canvas有个SortOrder的排序,这个只针对于所有OverlayCanvas之间的渲染排序,值越大渲染时机越晚。同时,OverlayCanvas的... 针对于所有的非OverlayCanvas渲染对象,包括3D物体,影响它们渲染顺序有三个...

        Overlay的Canvas有个SortOrder的排序,这个只针对于所有OverlayCanvas之间的渲染排序,值越大渲染时机越晚。同时,OverlayCanvas的所有UI对象,都是覆盖在所有3D对象之上的(包括特效)。所以特效要在UI之上,那么UI必须在世界空间的Canvas画布节点下。
        针对于所有的非OverlayCanvas渲染对象,包括3D物体,影响它们渲染顺序有三个参数:SortingLayer、OrderInLayer、RenderQueue。并且3D/2D都遵循这套规则。
        1.首先就是RenderQueue2500天空盒的渲染顺序。在此之前为不透明物体渲染,在此之后为透明物体渲染,前者必然在后者之前渲染。
        2.在2500同一侧的时候,则优先比较SortingLayer(靠前的序列先渲染),其次比较OrderInLayer,再其次比较RenderQueue
        即为RenderQueue为OrderInLayer的细分,OrderInLayer为SortingLayer的细分。
        3.Ui不加任何材质默认的渲染顺序是Transparent(3000),内置的特效材质渲染顺序也都是3000
    ps:
        1.任意Ui对象上可以添加Canvas组件来复写SortingLayer和OrderInLayer,但伴随着也需要添加GraphicRaycaster来响应触控(如果需要的话)
        2.canvas、particleSystem、以及某些renderer的子类在inspector面板上都是可直接设置SortingLayer、OrderInLayer,无法面板设置的Renderer代码也是可以设置的。

    展开全文
  • unity 3d ui渲染层次

    2018-07-05 11:41:36
    使用world spcace canvas,直接将下边image的材质替换成一个overlay的材质并不能够覆盖在所有物体之上 还需要修改canvas本身的SortingLayer 另外如果透明材质 虽然有transparent的设置 但是没有设置blend的方式的化 ...
  • Unity3D中UGUI控制渲染顺序

    千次阅读 2016-12-14 10:31:29
    不同Canvas之间可以更改Canvas的SortOrder属性进行控制 在相同Canvas下,可以改变控件的SiblingIndex属性来进行控制//myOrder的值越大,在Hirerachy面板中层次越靠后,显示越靠前(与SortOrder相同) ...
  • Unity渲染顺序

    千次阅读 2018-03-26 13:38:17
    影响渲染顺序的因素有:1.Camera Depth两个Camera进行渲染时,Depth值越大,那么渲染的物体就会在更上面。2. Z值同一个camera下,如果两个物体的shader的深度写入(ZWrite On)和深度比较(ZTest)都是开启的,那么距离...
  • Unity3DUI设计

    千次阅读 2017-08-06 15:30:30
    UI, 差不多是玩家打开一个游戏最先看到的东西, 差不多也是玩家最不在意的... 好在 Unity 这样的引擎提供了已经很强大的 UI 解决方案, 以及许多其他开发者提供的插件. 但是这还不够. 这篇文章主要谈一谈 UI 的逻辑设
  • Unity3d 5 官方教程:UI

    万次阅读 2017-03-29 23:30:12
    本篇是对UnityUI系统主要特性的介绍。 相关教程:用户界面CanvasCanvas是所有UI元素应当存放于内的区域。Canvas是一个有Canvas组件的游戏对象,并且所有UI对象必须是这样一个Canvas对象的子对象。
  • 之前一直用NGUI开发界面,但看到现在的unity的新版本的UGUI也不错,这几天专门学习了一下,用过NGUI的人都知道NGUI的渲染顺序或者层级关系是Deapth(深度)决定,而UGUI的界面是用Canvas(画布)进行布局的,它的渲染...
  • 其实3D物体基本不用考虑渲染顺序问题,但是在纯2D以及3D和2D混杂的情况下就要考虑这个问题了。比如2D游戏当中的游戏场景,UIUI特效,场景内特效。那么,使用一个统一的渲染顺序显然是有必要的。 事实上这个问题...
  • 这种情况下,渲染顺序是由canvas组件下的Sort Order决定的,值越大的越后渲染。 2,当有多个canvas并且渲染模式都为Camera。 这种情况下,渲染顺序首先由Rendener Camera的Depth值决定,值越大越后渲染。 如果...
  • 0.前言写下此文,主要是因为近来学习了一点UGUI的知识,便想着做个小玩意儿作为“毕设”,想做的内容很简单,就是实现在按钮上插入一个3D模型(最近很火的手游《王者荣耀》上就有类似的设计),没想到在渲染顺序的...
  • Unity3d UI设计简述

    千次阅读 2017-05-07 01:27:22
    在我们的实训项目中,本人主要负责UI的设计以及unityUI界面的代码编写部分。 由于之前没有对Unity进行过深入的了解,于是在实训开始的初期,我首先对于unity中的UI界面部分的功能进行了了解。 Canvas Canvas是...
  • Unity3D 中 3D 相机和 UI 相机的融合

    千次阅读 2019-07-04 15:05:37
    项目中需要一个界面成像摄像头画面,如果采用UI 元素进行显示,如:RawImage 进行显示,但会出现摄像机画面太大问题,即看着像相机的焦距放的很大。 RawImage 是UI 元素,无法通过缩放...解决办法:使用3D相机和UI...
  • 之前一直用NGUI开发界面,但看到现在的unity的新版本的UGUI也不错,这几天专门学习了一下,用过NGUI的人都知道NGUI的渲染顺序或者层级关系是...1.Unity3d中的渲染顺序如下:  不同的Camera的Depth  相同Camera下的
  • 可以将想要在最上层的UI放到最后去渲染,修改Hierarchy层级面板从上往下的顺序。 举个例子:  将gameover放到最上面时,就会被挡到。  当将顺序调到下面之后,就不会被挡到了。  所以的话,在同一个...
  • Unity渲染顺序

    2019-11-23 11:37:20
    一、Shader决定的3D物体渲染顺序 1.1、同材质的不透明物体,离摄像机正面越近越先渲染(从前往后),否则越晚渲染; 打开Frame Debug窗口(帧调试器)可看到RenderForward.RenderLoopJob项下,有7个Draw Mesh...
  • UnityUI和游戏物体之间的层级渲染

    千次阅读 2017-10-15 22:26:18
    之前使用一个UICamera和一个MainCamera做场景,希望给场景加上一个BackGround,但是将BackGround和操作的UI都绑在UICamera,将游戏物体正常地用MainCamera渲染时,出现了游戏物体遮挡住Button或者BackGround直接遮挡...
1 2 3 4 5 ... 20
收藏数 1,620
精华内容 648
关键字:

ui渲染顺序 unity3d