Sorting Group
# Sorting Group 排序组
排序组是一个可改变精灵渲染执行顺序的组件。 改组件允许将具有共同跟的一组渲染排序到一起。 Unity中的渲染按几个条件排序,这些条件包括渲染在图层中的顺序以及摄像机的距离。
# 设置排序组
要使用排序组组件,请将组件添加到游戏对象的根(要应用排序组的所有游戏对象的父游戏对象)。 选择游戏对象的根,然后在主菜单中选择Component> Rendering > Sorting Group
排序组在Scene视图中没有任何可视表示。盖组件可添加到空游戏对象;如果要将组排序一次性应用于大量游戏对象,测方法可能有用。
排序组不依赖于任何其他渲染,而且附加到改游戏对象及其后代的所有渲染都将一起渲染。
# 属性
Sorting Layer: 使用下拉选项选择图层; 该图层用于定义此精灵在渲染过程中的覆盖优先级
Order in Layer: 设置噶精灵在其图层中的覆盖优先级, 较小数字的精灵先渲染, 后续数字的精灵覆盖先前数字的精灵
# 对排序组排序
Unity使用排序图层的概念, 允许将精灵划分为多个组来确定覆盖优先级。排序图层顺序较低的排序组将被排序图层顺序较高的排序组覆盖
有时, 同一排序图层中的两个或更多个对象也可重叠(例如, 横向卷轴游戏中的两个玩家角色, 如下图所示) 。 可食用Order in Layer 属性向同一层中的排序组应用一致的优先级。与排序图层一样, 较小数组的排序组先渲染,并被后续的具有较大图层数字的排序组遮挡
排序组的子代将根据最近或下一个排序组(取决于按距离还是按Order in Layer排序) 的其它子代进行排序。总而言之, 排序组仅为其子代创建局部排序空间。因此可以使用 Sorting Layer 和 Order in Layer对组内的没个渲染排序, 但是在所在排序组的局部进行排序。
# 嵌套的排序组
嵌套的排序组将针对同一组中的其他渲染进行排序
然而,层级视图中不带排序组的游戏对象将一起渲染为单个图层,并且渲染仍然基于 Sorting Layer 和 Order in Layer 进行排序。
# 排序组使用方法示例
排序组通常用于具有复杂角色(由几个精灵组成) 的2D游戏
此角色位于单个排序图层中,并使用多个 Order in Layer 对角色身体部位进行排序。随后,Unity 将此角色保存为预制件,然后在游戏中将其多次克隆。
克隆后,由于身体部位在同一层上,因此这些部位彼此重叠,如下所示。
我们期望的结果是让一个角色的所有渲染器一起渲染,然后再渲染下一个角色。这样会产生彼此通过的视觉效果,使其中一个角色看起来比另一个角色更靠近摄像机,而不是两者看起来混合在一起。
添加到角色根部的排序组组件可确保身体部位不再重叠和混合在一起。