Unity 学习 Tilemap

Tilemap

Tilemap 组件是一个存储和处理瓦片资源以便创建 2D 关卡的系统。此组件将所需信息从放置在组件上的瓦片传输到其他相关组件,例如 Tilemap Renderer 和 Tilemap Collider 2D。

将此组件与 Grid 组件(或父 Grid 游戏对象)结合使用可在相关网格上布置瓦片。在创建瓦片地图(菜单:GameObject > 2D Object > Tilemap)时,Unity 自动创建 Grid 游戏对象并将其设置为子 Tilemap 游戏对象的父级。

在这里插入图片描述

属性功能
Animation Frame RateUnity 播放瓦片动画的速率。增加或减少此值会根据等效因子更改速度(例如,如果将此值设置为 2,Unity 将以两倍速度播放瓦片动画)。
Color使用所选颜色为此瓦片地图上的瓦片进行着色。设置为白色时,Unity 会渲染没有色调的瓦片。
Tile Anchor此瓦片地图上瓦片的锚定偏移。通过调整位置值可以偏移关联网格上瓦片的单元格位置。
Orientation瓦片地图上瓦片的方向。如果需要在特定平面上定位瓦片(尤其是在 3D 视图中),请使用此属性。
XYUnity 在 XY 平面上定位瓦片。
XZUnity 在 XZ 平面上定位瓦片。
YXUnity 在 YX 平面上定位瓦片。
YZUnity 在 YZ 平面上定位瓦片。
ZXUnity 在 ZX 平面上定位瓦片。
ZYUnity 在 ZY 平面上定位瓦片。
CustomUnity 根据下方参数设置的自定义方向矩阵设置来布置瓦片,当选择此选项时,这些设置将变为可编辑。
- Position显示当前方向矩阵的位置偏移。只有在 Tilemap 的 Orientation 设置为 Custom 时才能编辑此属性。
- Rotation当前方向矩阵的旋转。只有在 Tilemap 的 Orientation 设置为 Custom 时才能编辑此属性。
- Scale当前方向矩阵的缩放。只有在 Tilemap 的 Orientation 设置为 Custom 时才能编辑此属性。

瓦片地图工作流程

以下是创建和绘制__瓦片地图__的一般工作流程:

1.创建 Tilemap 游戏对象。此过程还会自动创建 Grid 游戏对象。 2.直接创建瓦片资源,或从精灵生成瓦片。 3.使用所选的__瓦片资源__创建瓦片面板。 4.使用__瓦片面板__在__瓦片地图__上进行绘制。 5.(可选)将 Tilemap Collider 组件连接到瓦片地图以便使瓦片地图与 Physics2D 交互。

Unity 还支持特殊类型的瓦片地图,例如六边形 (Hexagonal) 和等距 (Isometric) 瓦片地图。有关这些瓦片地图的具体工作流程,请参阅各自页面上的文档。

瓦片资源(Tile Assets)

瓦片__是排列在__瓦片地图__上的__资源,用于构建 2D 环境。每个瓦片引用一个选定的__精灵__,然后在瓦片地图网格上的瓦片位置处渲染该精灵。

资源属性

在这里插入图片描述

属性功能
Preview显示包含所选__精灵__的瓦片的视觉效果预览。
Sprite选择要在此瓦片上渲染的精灵纹理。单击右侧的圆圈图标可打开对象选择器窗口,然后从可用的精灵资源中进行选择,或者将精灵直接拖到此框中。
Color使用所选颜色为此瓦片地图上放置的瓦片进行着色。设置为白色时,将渲染没有色调的瓦片。
ColliderType 定义为瓦片生成的碰撞体的形状。
- None不生成碰撞体。
- Sprite基于所选__精灵__的轮廓生成碰撞体形状。
- Grid碰撞体形状基于__瓦片地图__的单元格。单元格的形状取决于为瓦片地图选择的单元格布局。

瓦片地图渲染器 (Tilemap Renderer)

Tilemap Renderer 组件是 Tilemap 游戏对象的一部分。此组件可控制__瓦片地图 (Tilemap)__ 上设置的__瓦片 (Tiles)__ 的渲染方式。
在这里插入图片描述

属性功能
Material定义用于渲染精灵纹理的材质。
Sort Order设置所选瓦片地图上的瓦片排序方向。
Mode设置渲染器的渲染模式。
- Chunk渲染器按位置对瓦片进行分组,并将瓦片的精灵一起批处理以进行渲染。选择此模式可在瓦片地图中获得最佳渲染性能。
- Individual渲染器单独渲染每个瓦片,同时还会考虑它们的位置和排序顺序。此模式使瓦片上的精灵能够与场景中的其他渲染器或与自定义排序轴进行交互。
Detect Chunk Culling Bounds确定渲染器如何检测用于剔除瓦片地图块的边界。这些边界可扩展瓦片地图块的边界,以确保在剔除过程中不会裁剪过大的精灵。
- Auto渲染器会自动检查瓦片使用的精灵,以确定要使用的扩展剔除边界。
- Manual用于扩展边界以剔除瓦片地图块的值是手动设置的,而不使用 Editor 的自动检测功能。
Chunk Culling Bounds(选择“Manual”时) 输入剔除边界扩展的值(采用 Unity 单位)。
Sorting Layer设置瓦片地图的排序图层 (Sorting Layer)。从下拉框中选择现有的排序图层,或创建新的排序图层。
Order in Layer设置瓦片地图在其排序图层中的渲染优先级。首先渲染编号较低的图层。编号较高的图层叠加在前者之上。
Mask Interaction设置瓦片地图渲染器 (Tilemap Renderer) 在与精灵遮罩交互时的行为方式。
- None瓦片地图渲染器不与场景中的任何精灵遮罩交互。这是默认选项。
- Visible Inside Mask瓦片地图在精灵遮罩覆盖瓦片地图的地方是可见的,而在遮罩外部不可见。
- Visible Outside Mask瓦片地图在精灵遮罩外部是可见的,而在遮罩内部不可见。精灵遮罩会隐藏其覆盖的精灵部分。

创建瓦片

可使用两种方法在 Unity 中创建__瓦片 (Tile)__ 资源;第一种方法是从 Assets 菜单直接创建瓦片资源。第二种方法是从一组精灵自动生成瓦片资源。

从 Asset 菜单中创建瓦片资源

直接从 Assets 菜单中创建瓦片 (Assets > Create > Tile)。系统将提示命名并将新的瓦片资源保存到您选择的位置。
在这里插入图片描述
在这里插入图片描述
创建好 Tile1,在 Inspector 中添加 Sprite。即可新建好瓦片资源。

从瓦片面板 (Tile Palette) 生成瓦片资源

在 Tile Palette 窗口中为瓦片面板选择精灵时,可以自动生成瓦片。要创建新的瓦片面板 (Tile Palette),请在 Tile Palette 窗口中选择 Create New Palette__,然后选择 Create__。
在这里插入图片描述
在 Create New Palette 窗口中提供了以下选项。

属性功能
名称为创建的瓦片面板资源提供一个名称。
Grid选择要将创建的瓦片面板绘制到的网格布局。
- Rectangle如果要为默认矩形瓦片地图创建面板,请选择此选项。
- Hexagon如果要为六边形瓦片地图 (Hexagonal Tilemap) 创建面板,请选择此选项。
- Isometric如果要为等距瓦片地图 (Isometric Tilemap) 创建面板,请选择此选项。请参阅创建用于等距瓦片地图的瓦片面板以了解更多信息。
- Isometric Z as Y如果要为 Isometric Z as Y Tilemap 创建面板,请选择此选项。请参阅创建用于等距瓦片地图的瓦片面板以了解更多信息。
* Hexagon Type(仅当 Grid 类型设置为 Hexagon 时可用) 选择要将瓦片面板绘制到的六边形瓦片地图的类型。请参阅有关六边形瓦片地图的文档以了解更多信息。
Cell Size要将瓦片绘制到的单元格的大小。
AutomaticCell Size 以 Unity 单位自动设置,并基于用于创建瓦片资源的精灵的大小。如果有多个瓦片,则会调整 Cell Size 以匹配面板左下角的第一个瓦片,使其完全适合单元格。
Manual选择此选项可输入自定义大小值。

创建或加载瓦片面板后,请将 Assets 文件夹中的__纹理__或__精灵__拖放到瓦片面板上。

提供面板名称,然后选择 Create 按钮。选择一个文件夹来保存面板。新创建的面板会自动加载。

编辑瓦片面板 (Tile Palette)

用于在瓦片地图上绘制瓦片的面板工具也可用于在面板本身中编辑瓦片的放置位置。从下拉菜单中选择一个面板,然后单击 Edit 将面板解锁以进行编辑。

在这里插入图片描述
系统将提示输入新瓦片资源的保存位置。选择保存位置,因此会在所选文件夹中将生成新的瓦片资源,并会将瓦片放置在瓦片面板中。

创建瓦片地图 (Tilemap)

从 GameObject 菜单中创建默认的__瓦片地图__(菜单:GameObject > 2D Object > Tilemap)。
在这里插入图片描述
选择 Tilemap 选项后,在场景中将会创建一个新的 Grid 游戏对象,其中包含 Tilemap 子游戏对象。Grid 游戏对象决定了其子 Tilemap 的布局。
在这里插入图片描述
Tilemap 子游戏对象由 Tilemap 组件和 Tilemap Renderer 组件组成。Tilemap 游戏对象是绘制瓦片的地方。

在这里插入图片描述
选择 Grid 游戏对象或 Tilemap 游戏对象来创建其他 Tilemap,然后选择菜单:GameObject > 2D Object > Tilemaps__,或右键单击所选的游戏对象并选择 2D Object__ > Tilemap
在这里插入图片描述
然后会创建一个 Tilemap 游戏对象并将其作为 Grid 父游戏对象的子项添加到 Hierarchy 窗口中(即使原来选择了同级 Tilemap 游戏对象也是如此)。
创建 Tilemap 后,请调整 Grid 属性设置以调整其 Tilemap 子项的属性。Grid 父游戏对象中的更改会影响所有具有瓦片地图 (Tilemap)、瓦片地图渲染器 (Tilemap Renderer) 和瓦片地图 2D 碰撞体 (Tilemap Collider 2D) 组件的子游戏对象。

在瓦片地图上绘制

要开始绘制瓦片,请从 Tilemap Palette 窗口中的 Active Tilemap 下拉选单中选择要绘制瓦片的瓦片地图。场景层级视图中创建的瓦片地图会自动添加到下拉菜单中。只有选定的有效瓦片地图 (Active Tilemap) 会受瓦片面板 (Tile Palette) 绘制工具的影响。
在这里插入图片描述
瓦片地图绘制工具位于 Tile Palette 窗口顶部的一行中。这些工具也用于编辑瓦片面板 (Tile Palette) 本身。
在这里插入图片描述

绘制工具快捷键

瓦片地图 2D 碰撞体 (Tilemap Collider 2D)

可将 Tilemap Collider 2D 组件添加到 Tilemap 游戏对象来为相应 Tilemap 组件中设置的每个__瓦片 (Tile)__ 生成__碰撞体 (Collider)__ 形状。在 Tilemap 组件中添加或删除瓦片时,Tilemap Collider 2D 组件会在 LateUpdate 期间更新碰撞体形状。

为 Tilemap 组件中的每个瓦片生成的碰撞体形状取决于瓦片资源中设置的所需碰撞体类型。

Collider Type功能
NoneTilemap Collider 2D 组件不会为此瓦片生成任何碰撞体形状。
SpriteTilemap Collider 2D 组件基于分配给瓦片的精灵生成碰撞体形状。碰撞体形状可以是为精灵设置的自定义物理形状,也可以是从精灵轮廓生成的近似形状。
GridTilemap Collider 2D 组件基于网格单元格的形状(由 Grid 组件的选定单元格布局 (Cell Layout) 确定)生成碰撞体形状。

此碰撞体与 Composite Collider 2D 组件结合使用。要将相邻瓦片的碰撞体形状合成在一起,请将两者添加到同一 Tilemap 组件。这样可以平滑相邻瓦片中碰撞体形状之间的角和边。

这样做还可以提高 Tilemap Collider 的性能,因为物理更新中涉及的单独碰撞体形状更少。如此将减少所需的计算量。

学习参考网站链接:Unity Tilemap


版权声明:本文为CH400S原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。