Unity渲染顺序(2)

Camera

在这里插入图片描述
除了Screen Space - Overlay(屏幕空间覆盖模式)下的Canvas,场景中的其他物体需要渲染到屏幕中,都需要在指定的相机的绘制下。场景中可以创建多个相机,每个相机所拍摄的内容可能并不相同,在场景中有多相机的情况,不同的相机通过Depth属性确认排序层级,Depth值越大,排序层级越高。

Sorting Group

在这里插入图片描述
当场景中的对象有子节点,且子节点数量较多的情况下,因为非UI对象,子节点的渲染顺序是与父子关系无关的,都是依赖于子节点上的SortingLayer 和 Order In Layer 排序,那么我们克隆一个对象,因为每个渲染对象上的 排序属性并不会改变,将导致两个整体的对象呈现错位的显示。

Sorting Group 将会把对象及其子节点同一批次渲染,这样保证了我们单个整体对象的一起渲染。
回观Canvas组件,UI对象并不是绘制到画布上,而是与Canvas的排序层级在一个批次中渲染,而UI对象决定了在一个批次中的渲染的优先级顺序。
而我们需要Camera渲染到屏幕中的对象,也将根据投射的相机,与Camera同一批次渲染,在批次中的顺序将由他们的排序层级中决定

  • 注意:Canvas并不会受到Sorting Group的影响, 也就是说及时Canvas对象的父级对象中存在Sorting Group组件,Canvas依然是根据自己的排序渲染,并不会被整合到父级对象的批次中。

渲染顺序总结

  1. Canvas(Screen Space - Overlay)
    排序层级最高的应该是我们不借助Camera渲染的 Canvas的屏幕空间覆盖模式,也就是说它将至于屏幕的最上层

  2. Camera -(Depth)
    场景中存在多个Camera对象时,两个物体在不同的Camera对象上,那么物体的渲染顺序将由Camera的Depth属性决定,值越大,优先级越高

  3. 透明、不透明物体
    Unity的渲染相关的组件需要借助于Material(材质),而Material是有由Shader创建的,在Shader上有一个 RenderQueue 属性。 那么这个是我们的渲染物体的渲染队列属性,Unity把2500作为透明与不透明物体的分割线,大于2500的属于我们的透明物体,小于等于2500的属于不透明物体,而不透明物体的物体在透明物体的渲染之前,Unity先渲染不透明物体,在渲染透明物体,在屏幕上显示透明物体的层级将更高。

  4. SortingLayer
    SortingLayer 属性我们前面介绍过,它是我们渲染对象的排序层级,在编辑面板中越靠后的层级越高,越往后渲染。当两个渲染对象的SortingLayer一致的时候,比较Order In Layer的数值,数值越大越靠后渲染,层级越高。

  5. RenderQueue
    当上面的条件都一致的时候,我们判断RenderQueue的值,值越大,越靠后渲染,层级越高。

  6. 深度排序
    渲染组件的深度由对象上的Z值决定。
    不透明物体由近到远排序优先
    透明物体由远到近排序优先

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_25667669/article/details/123965915