排序组 允许您将与 GameObjectUnity场景中的基本对象,可以代表角色、道具、场景、相机、航点等等。GameObject的功能由附加到其上的组件定义。更多信息
详见术语表 一起的精灵组织在一起,并控制它们渲染精灵的顺序。Unity将同一排序组中的精灵渲染器一起渲染,就像它们是一个单一的GameObject。
要将GameObject放入一个排序组,请向其添加排序组件。为此,请选择GameObject,然后转到 组件 > 渲染 > 排序组,或选中Inspector窗口中的 添加组件 按钮。
向GameObject添加排序组件时,Unity将对该组件附加到的GameObject的所有子GameObject应用同样的 排序组。
‘精灵’子对象属于空父GameObject的 排序组。
Unity使用排序组的设置来确定其如何与其他排序组和GameObject中的渲染器排序。有关更多信息,请参阅 2D排序。
要对排序组内的渲染器进行排序,Unity使用排序组中渲染器的单个排序设置。有关更多信息,请参阅 在排序组内排序渲染器。
Unity使用一个 排序组 的 排序层 和 层中顺序 值来确定其在渲染队列中其他排序组和GameObject中的优先级。
属性 | 功能 |
---|---|
排序层 | 从下拉菜单中选择或添加 排序层,以确定排序组在渲染队列中的位置。Unity根据其在排序层设置中的位置确定排序层顺序;按列表中的顺序渲染排序层。有关设置排序层的更多信息,请参阅 标签和层。 |
层中顺序 | 为这个排序组的渲染顺序设置其在 排序层 内的位置。Unity 将渲染器的排序列为值较低优先,因此它们会出现在值为较高渲染器的前面。 |
在根目录排序 | 启用此选项来忽略所有父级排序组(如果此排序组是嵌套的)。这允许此排序组在根级别与其他渲染器和排序组进行排序。 |
有关使用排序层对精灵进行排序以及Unity的渲染器排序标准的信息,请参阅2D排序。
Unity按每个渲染器各自的 排序层 和 层内顺序 属性对其进行排序。在排序过程中,Unity不考虑每个渲染器的各自 到相机距离 属性。取而代之的是,它根据包含排序组件的根GameObject的位置为整个排序组(包括其所有子渲染器)设置一个到相机的距离值。
当Unity在场景中对排序组及其他渲染器和排序组进行排序时,排序组的内部排序顺序保持不变。
以下图表显示了排序过程。
Unity将属于同一排序组的所有渲染器视为单个图层,并基于它们的 排序层 和 层内顺序 属性设置对非分组渲染器进行排序。
编辑器将排序组的子 粒子系统一个组件,通过生成和动画大量小的2D图像来模拟流体实体,如液体、云和火焰。《更多关于粒子系统的信息。 作为该排序组内的另一个渲染器,并根据其 排序层 和 层内顺序 属性设置对它进行内部排序。
当Unity对排序组内的其他渲染器和粒子系统进行排序时,它忽略了粒子系统的 排序微调 值。
嵌套排序组是具有父级排序组的排序组。Unity首先对嵌套排序组内的渲染器进行排序,然后再对其父级排序组进行排序(参见 在排序组内部排序渲染器)。
在Unity确定嵌套排序组的内部排序顺序后,它将该嵌套排序组与其他渲染器或父级排序组内的其他排序组进行排序。嵌套排序组可以作为子排序组。Unity首先对其最内层的子组进行排序,然后再对其进行各自的父级排序组进行排序。
以下图表给出了嵌套排序组排序过程的示例。
在某些情况下,您可能有一个基于场景 层次结构 排序的嵌套排序组。然而,您可能希望此嵌套排序组从其父级排序组独立渲染,同时不改变其在场景层次结构中的位置。
您可以通过启用此选项来允许此排序组忽略其父排序组,这使得此排序组可以在没有对GameObject重新父化到另一个Transform的情况下,与其他渲染器和排序组全局排序。所有子渲染器和排序组(没有忽略其父级的)都将在此排序组下进行排序。
创建2D多精灵角色的最常见方法是将多个精灵渲染器一起排列并放置在层次结构窗口中以形成一个角色。您可以使用排序组帮助管理此类复杂的多个精灵角色。
在下面的示例中,精灵渲染器属于相同的排序层,但有不同的层中顺序值。Unity将按照您想要的顺序排序角色的不同部分。
在配置排序组和排序层后,您可以保存您的角色作为
但是,Prefab精灵具有相同的排序层和层中顺序值,并渲染与其他Prefab相同的层,这可能会导致Prefab角色不同部分相互交叉并分层不正确。
要确保Prefab保持其渲染顺序一致性,以便正确显示,请将排序组组件添加到每个Prefab的根GameObject中。保存已编辑的Prefab,以便所有当前和未来的Prefab实例也具有排序组组件。
每个Prefab都应具有具有相同排序层和层中顺序属性设置的排序组组件。这可能会造成处于相同排序层上的Prefab中的渲染器以不一致的方式进行渲染,因为它们在渲染队列中具有相同的优先级。
为了避免此问题,为每个Prefab的排序组组件提供一个唯一的层中顺序值。Unity首先渲染具有较低层中顺序值的排序组,然后具有较高值的排序组会覆盖较低的排序组。有关编辑和重新排序排序层的更多信息,请参阅标签和层。
每个Prefab都具有具有唯一层中顺序值的排序组组件,以确保Unity正确渲染每个角色及其部分。
SortingGroup