添加排序层级
在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对象在画布上的渲染顺序,那么画布在场景中的绘制顺序将由画布的渲染模式决定。-
Screen Space - Overlay 模式
屏幕空间-覆盖模式的画布会填满整个屏幕空间,并将画布下面所有的UI元素置于屏幕的最上层,或则说画布的画面永远“覆盖”在其他普通的3D画面,如果屏幕尺寸被改变,画布将自动改变尺寸来匹配屏幕。那么当场景中有多个覆盖模式的画布,它们怎么确认谁的层级更高呢?
在覆盖模式下,有一个Sort Order的属性,它是一个Canvas的排序属性,是一个int类型,当他的数值越到,那么Canvas的层级也就越高。 -
Screen Space - Camera 模式
屏幕空间-摄影机模式 和 Screen Space - Overlay模式类似,画布也是填满整个屏幕空间,如果屏幕尺寸改变,画布也会自动改变尺寸来匹配屏幕。所不同的是,在该模式下,画布会被放置到摄影机前方。在这种渲染模式下,画布看起来是绘制在一个与摄影机固定距离的平面上。所有的UI元素都由该摄像机渲染。因此摄像机的设置会影响到UI画面。为什么要有两个填满空间的画布模式呢?
覆盖模式下是不需要相机的,也就是它的顺序跟我们的世界是无关的,我们没办法控制画布和2D的物体的渲染先后层级,它总是在2D物体的上面。引入相机模式也是为了让我们的画布可以与2D物体去做层级上的调整。 -
World Space 模式
世界控件模式,在此模式下,画布被视为与场景中其他普通游戏对象性质相同的游戏物体。
为什么要引入世界模式
前两种模式都是覆盖屏幕的,随着分辨率的调整,他们也会不断的调整画布的大小以充满屏幕,而我们可能需要一个固定大小的画布,所以引入了世界控件的模式
上述Screen Space 和 World Space 模式的排序层级通过设置SortingLayer 和 Order in Layer的值来确定,在SortingLayer 不同情况下,靠后的层级越高,当SortingLayer 一致的时候,将根据Order in Layer(层级上的排序)的数值越大,排序层级越高。
-