2D游戏
# 2D 游戏
Scene视图工具栏中的2D
视图按钮很好体现2d模式,启用2D
模式时将会设置正交(即无透视)视图: 摄像机沿Z轴观察,而Y轴向上增加。因此可以轻松可视化场景并防止2D对象;
# 2D图形
2D
图形对象称为精灵。 精灵本质上只是标准纹理,但可通过一些特殊技巧在开发过程中组合和管理精灵纹理以提高效率和方便性。Unity内置 SpriteEditor
,允许从更大图像提起精灵图形。因此可以在图像编辑中编辑单个纹理内的多个组件图像。例如,可以使用此工具将角色的手臂,腿和身体保持为一个图像中的单独元素。
应使用Sprite Renderer
组件而不是用于3D对象的 Mesh Renderer
来渲染精灵。可通过Components
菜单(Components>Rendering>Sprite Renderer)将精灵渲染(Sprite Renderer)添加到游戏对象,也可以直接创建已附加精灵渲染的游戏对象(菜单:GameObject > 2D Object > Sprite);
此外,可以使用 Sprite Creator
工具来创建2D占位图像。
# 2D物理
Unity有独立物理引擎来处理2D物理,以便利用仅适用于2D的优化。2D物理组件对应于标准3D物理组件(例如:刚体 (Rigidbody), 盒型碰撞体(Box Collider)和 铰链关节(Hinge Joint)), 但名称附加了"2D"字样,因此,精灵可以配备2D 刚体(Rigidbody 2D), **2D盒型碰撞盒(Box Collider)**和 2D 铰链关节(Hinge Joint 2D)
# 2D排序
Unity
根据优先级顺序对渲染器进行排序,而优先级顺序取决于渲染器的类型和用途。可以通过渲染队列指定渲染器的渲染顺序。通常有两个主要队列:不透明队列和透明队列。2D
渲染器主要位于透明队列中,包括精灵渲染器 (Sprite Renderer
)、瓦片地图渲染器 (Tilemap Renderer
) 和精灵形状渲染器 (Sprite Shape Renderer
) 类型。
# 透明队列按优先级排序
透明队列中的 2D 渲染器通常遵循以下优先级顺序:
1. 排序图层和图层中的顺序
2. 指定渲染队列
3. 与摄像机的距离 * 透视/正交 * 自定义轴排序模式 * 精灵排序点
4. 排序组
5. 材质/着色器
6. 多个渲染器具有相同的排序优先级时,将由仲裁程序决定优先级。
还有其他一些因素可能导致排序顺序与常规优先级顺序不同。这些因素因项目而异。
# 排序图层和图层中的顺序
可以通过 `Inspector` 窗口或通过 `Unity Scripting API` 将排序图层 (`Sorting Layer`) 和图层中的顺序 (`Order in Layer`)(位于渲染器的 `Property` 设置中)用于所有 `2D` 渲染器。为确定渲染器在渲染队列中的优先级,可以将渲染器设置为现有的排序图层,或创建一个新排序图层。更改 `Order in Layer` 的值,即可设置渲染器在同一排序图层中的其他渲染器之间的优先级。
# 指定渲染队列
可以在渲染器材质设置中或渲染器材质的着色器设置中指定渲染器的渲染队列类型。这对于使用不同材质的渲染器的分组和排序很有用。
# 与摄像机的距离
Camera
组件根据其 Projection
设置对渲染器进行排序。两个选项分别是 Perspective
和 Orthographic
。
Perspective 透视
在此模式下,渲染器的排序距离是渲染器与摄像机位置的直接距离。
Orthographic 正交
渲染器的排序距离是渲染器位置与摄像机沿着摄像机视图方向的距离。对于默认的 2D 设置,此方向是指沿着 (0, 0, 1) 轴。
摄像机 Transparency Sort Mode
设置位于 Project Settings
中的 Graphics
类别下(主菜单:Edit > Project Settings > Graphics
)。当此设置为 Default
时,Camera
组件的 Projection
设置将具有更高优先级。当此设置为 Default
以外的选项时,Camera
组件的 Projection
设置保持不变,但摄像机的 Transparency Sort Mode
将更改为该选项。
通过 Project Settings
和脚本 API 提供的另一个选项是自定义轴 (Custom Axis
) 排序模式。
# Custom Axis(自定义轴排序模式)
选择此模式可根据 `Project Settings`(主菜单:`Edit > Projecting Settings > Graphics > Transparency Sort Axis`)中设置的渲染器在自定义轴上的距离对渲染器进行排序。此模式通常用于具有等距瓦片地图 (`Isometric Tilemaps`) 的项目中,以便在瓦片地图 (`Tilemap`) 上正确排序和渲染瓦片精灵 (`Tile Sprites`)。
# 精灵排序点
默认情况下,精灵的 `Sort Point`(`排序点`)设置为其 `Center`,因此 `Unity` 会测量摄像机的变换位置与精灵的中心之间的距离,以确定它们在排序过程中的渲染顺序。另一种选项是将精灵的 `Sort Point` 设置为世界空间中的 `Pivo`t 位置。为此,请在精灵的 `Sprite Renderer` 属性设置中选择 `Pivot` 选项,然后在 `Sprite Editor` 中编辑精灵的 `Pivot` 位置。
# 排序组
排序组 (`Sorting Group`) 是一个组件,它将具有共同根的渲染器分组到一起以进行排序。同一排序组中的所有渲染器具有相同的排序图层 (`Sorting Layer`)、图层中的顺序 (`Order in Layer`) 和与摄像机的距离 (`Distance to Camera`)。请参阅有关排序组 (`Sorting Group`) 组件及其相关设置的文档以了解更多详细信息。
# 材质/着色器
Unity 将具有相同材质设置的渲染器排序到一起,以获得更高效的渲染性能,例如在进行动态批处理时。
# 仲裁程序
当多个渲染器具有相同的排序优先级时,由仲裁程序决定 Unity 将渲染器放置在渲染队列中的顺序。因为这是您无法控制的内部过程,所以您应该使用排序选项(例如 `Sorting Layers` 和 `Sorting Groups`)确保所有渲染器具有不同的排序优先级。