Unity渲染顺序(1)

添加排序层级

在这里插入图片描述
在Unity编辑器的右上角选择Layers 按钮,在下拉菜单中点击Edit Layers…选项,将显示当前Unity的Tags, Sorting Layers,和Layers 编辑选项。
在这里插入图片描述
Sorting Layers是Unity中对排序的层级的定义块,在面板中越靠后的排序层级越高。Default 是默认的层级,我们添加First 和 Default 两个排序层级为之后的排序测试做准备。

Canvas

  • 简介
    Canvas 组件作为UI对象的承载组件,也就是说UI的对象将经由Canvas才能绘制到我们的屏幕上,任何的UI对象将必须是Canvas组件对象的子节点,当场景中不存在Canvas组件对象,我们创建一个UI,系统将会创建一个Canvas,并且将该对象添加为其的子节点。

  • UI在Canvas上的渲染顺序
    在这里插入图片描述

在这里插入图片描述

在Canvas中,UI对象的渲染顺序将根据在Canvas中父子关系树状渲染,1,2 处于同级关系,因为2在面板中靠后,所以将先渲染 1,1的子节点3,再渲染 2。

  • RenderMode(画布渲染模式)
    前面介绍的是UI对象在画布上的渲染顺序,那么画布在场景中的绘制顺序将由画布的渲染模式决定。

    1. Screen Space - Overlay 模式
      在这里插入图片描述
      屏幕空间-覆盖模式的画布会填满整个屏幕空间,并将画布下面所有的UI元素置于屏幕的最上层,或则说画布的画面永远“覆盖”在其他普通的3D画面,如果屏幕尺寸被改变,画布将自动改变尺寸来匹配屏幕。

      那么当场景中有多个覆盖模式的画布,它们怎么确认谁的层级更高呢?
      在覆盖模式下,有一个Sort Order的属性,它是一个Canvas的排序属性,是一个int类型,当他的数值越到,那么Canvas的层级也就越高。

    2. Screen Space - Camera 模式
      在这里插入图片描述
      屏幕空间-摄影机模式 和 Screen Space - Overlay模式类似,画布也是填满整个屏幕空间,如果屏幕尺寸改变,画布也会自动改变尺寸来匹配屏幕。所不同的是,在该模式下,画布会被放置到摄影机前方。在这种渲染模式下,画布看起来是绘制在一个与摄影机固定距离的平面上。所有的UI元素都由该摄像机渲染。因此摄像机的设置会影响到UI画面。

      为什么要有两个填满空间的画布模式呢?
      覆盖模式下是不需要相机的,也就是它的顺序跟我们的世界是无关的,我们没办法控制画布和2D的物体的渲染先后层级,它总是在2D物体的上面。引入相机模式也是为了让我们的画布可以与2D物体去做层级上的调整。

    3. World Space 模式
      在这里插入图片描述
      世界控件模式,在此模式下,画布被视为与场景中其他普通游戏对象性质相同的游戏物体。
      为什么要引入世界模式
      前两种模式都是覆盖屏幕的,随着分辨率的调整,他们也会不断的调整画布的大小以充满屏幕,而我们可能需要一个固定大小的画布,所以引入了世界控件的模式

    在这里插入图片描述

    上述Screen SpaceWorld Space 模式的排序层级通过设置SortingLayer 和 Order in Layer的值来确定,在SortingLayer 不同情况下,靠后的层级越高,当SortingLayer 一致的时候,将根据Order in Layer(层级上的排序)的数值越大,排序层级越高。

猜你喜欢

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