Version: Unity 6.0 (6000.0)
语言 : 中文
2D 游戏艺术风格参考
精灵

2D 渲染器排序

概述

Unity 根据优先级顺序对渲染器进行排序,而优先级顺序取决于渲染器的类型和用途。可以通过渲染队列指定渲染器的渲染顺序。通常,有两个主要队列:不透明队列透明队列。2D 渲染器主要位于透明队列中,包括精灵渲染器瓦片地图渲染器精灵形状渲染器类型。

透明队列按优先级排序

透明队列中的 2D 渲染器通常遵循以下优先级顺序:

  1. 排序层和层中的顺序

  2. 指定渲染队列

  3. 与摄像机的距离

  4. 排序组

  5. 材质/着色器

  6. Tiebreaker

还有其他一些因素可能导致排序顺序与常规优先级顺序不同。这些因素因项目而异。

排序层和层中的顺序

可以通过 Inspector 窗口或通过 Unity Scripting API 将排序层层中的顺序(位于渲染器的属性设置中)用于所有 2D 渲染器。为确定渲染器在渲染队列中的优先级,可以将渲染器设置为现有的排序层,或创建一个新排序层。更改层中的顺序的值,即可设置渲染器在同一排序层中其他渲染器之中的优先级。

指定渲染队列

可以在渲染器材质设置中或渲染器材质的着色器设置中指定渲染器的渲染队列类型。这对于使用不同材质的渲染器的分组和排序很有用。请参阅关于 ShaderLab:SubShader 标签的文档,了解更多详细信息。

与摄像机的距离

摄像机组件根据其投影设置对渲染器进行排序。两个选项分别是透视正交

透视

在此模式下,渲染器的排序距离是渲染器与摄像机位置的直接距离。

正交

渲染器的排序距离是渲染器位置与摄像机之间的距离(沿着摄像机视图方向)。对于默认的 2D 设置,此方向是指沿着 (0, 0, 1) 轴。

将 Camera 组件设置为透视正交时,Unity 会自动设置摄像机的 TransparencySortMode 以匹配所选的模式。可以通过两种方式手动设置 Transparency Sort Mode:

  • 打开项目设置 (Project Settings),选择图形 (Graphics),然后在摄像机设置 (Camera Settings) 下设置透明排序模式 (Transparent Sort Mode)
  • 通过脚本 API 设置摄像机的 TransparencySortMode

摄像机 Transparency Sort Mode 设置位于 Project Settings 中的 Graphics 类别下(主菜单:编辑 (Edit) > 项目设置 (Project Settings) > 图形 (Graphics))。当此设置为 Default 时,Camera 组件的 Projection 设置将具有更高优先级。当此设置为 Default 以外的选项时,Camera 组件的 Projection 设置保持不变,但摄像机的 Transparency Sort Mode 将更改为该选项。

通过 Project Settings 和脚本 API 提供的另一个选项是 Custom Axis sort mode

自定义轴排序模式

选择此模式可根据 Project Settings(主菜单:编辑 (Edit) > 项目设置 (Project Settings) > 图形 (Graphics) > 透明度排序轴 (Transparency Sort Axis))中设置的渲染器在自定义轴上的距离对渲染器进行排序。此模式通常用于具有 Isometric Tilemaps 的项目中,以便在瓦片地图上正确排序和渲染瓦片精灵。请参阅创建等距瓦片地图以了解更多信息。

注意:如果您的项目是 2D 通用渲染管线 (URP) 项目,则 Transparency Sort ModeProject Settings 中不可用,而是在 2D Renderer 资源属性中进行配置。请参阅配置 2D 渲染器资源文档以了解更多信息。

精灵排序点

默认情况下,精灵的 Sort Point 设置为其 Center,因此 Unity 会测量摄像机的变换位置与精灵的中心之间的距离,以确定它们在排序过程中的渲染顺序。另一种选项是将精灵的 Sort Point 设置为世界空间中的 Pivot 位置。在精灵的 Sprite Renderer 属性设置中选择 Pivot 选项,然后在 Sprite Editor 中编辑精灵的 Pivot 位置。

排序组

排序组是一个组件,它将具有共同根的渲染器分组到一起以进行排序。同一排序组中的所有渲染器具有相同的排序层、层中的顺序与摄像机的距离。请参阅有关排序组组件及其相关设置的文档以了解更多详细信息。

材质/着色器

Unity 将具有相同材质设置的渲染器排序到一起,以获得更高效的渲染性能,例如在进行动态批处理时。

Tiebreaker

当多个渲染器具有相同的排序优先级时,由 Tiebreaker 决定 Unity 将渲染器放置在渲染队列中的顺序。因为这是无法控制的内部过程,所以应该使用排序选项(例如排序层排序组)确保所有渲染器具有不同的排序优先级。

2D 游戏艺术风格参考
精灵