Agent Skills
返回列表
💻

Unity 2D 瓦片地图

开发编程 更新于 2026.08.30

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/unity-tilemap-2d-sh-boz40q。

技能介绍

在 Unity 6 里做 2D 关卡,如果靠手工摆 Sprite 拼地面和墙体,很容易在瓦片接缝、碰撞体缝隙和层级排序上反复返工。这个技能关注的是如何用引擎自带的 Grid/Tilemap 体系把地图从美术资产变成可用关卡,而不是替代关卡设计本身。

核心能力

  • Grid 与多 Tilemap 分层:通过 GameObject → 2D Object → Tilemap → Rectangular 建立网格,用多个 Tilemap 分别承载背景、地面、前景,并为每个 TilemapRenderer 指定 Sorting Layer 与 Order in Layer。
  • Tile Palette 资产化:在 Window → 2D → Tile Palette 中放入切片后的 Sprite Sheets,生成 Tile 资产并用画笔绘制到网格。
  • 碰撞合并:在实心层使用 TilemapCollider2D,需要更省性能且无缝隙时,叠加 CompositeCollider2D 与静态 Rigidbody2D,并勾选 Used By Composite。
  • Rule Tiles 自动拼接:使用外部包 2D Tilemap Extras 中的 RuleTile,让边缘与拐角自动匹配合适的贴图,减少手工摆放变体。
  • 运行时脚本读写:用 Vector3Int 单元格坐标调用 SetTile、GetTile、SetTilesBlock,并通过 WorldToCell / CellToWorld 与世界坐标互转。

典型流程

  1. 先建立 Grid 与各层 Tilemap,确认渲染排序。
  2. 打开 Tile Palette,从 Sprite Sheet 生成 Tile 并完成基础刷涂。
  3. 为可碰撞层添加 TilemapCollider2D,按需合并成 CompositeCollider2D。
  4. 需要自动拼接时启用 RuleTile,让边缘、角落自动选择正确 Sprite。
  5. 在 Play 模式或生成流程中通过脚本批量填充区域。
  6. 用 Physics Debugger、Sorting Layer 设置和刷新逻辑做验证。

注意点

  • RuleTile 不在内置包中,必须通过 Package Manager 安装 com.unity.2d.tilemap.extras,否则会找不到类型。
  • 每块 Tile 一个 Collider 会明显拖慢性能并留缝隙,优先考虑 Composite 方案。
  • SetTile / GetTile 使用的是单元格坐标,不是世界坐标;脚本里写入前要先做坐标转换。
  • 多个 Tilemap 的前后遮挡依赖 Sorting Layer 与 Order in Layer,否则会出现渲染层级异常。
  • 脚本修改后,Rule / Animated Tile 不会自动刷新;少量修改用 RefreshTile(cell),只有整图重建才用 RefreshAllTiles()。
  • Tile Palette 的 Active Tilemap 决定刷到哪一层,批量操作前要确认当前目标层。

使用场景

  • 搭建 2D 关卡时,需要创建 Grid、分层 Tilemap 并设置渲染排序,为后续刷涂做准备
  • 地面层需要碰撞时,要在 TilemapCollider2D 上叠加 CompositeCollider2D 与静态 Rigidbody2D,合并成一个无缝碰撞体
  • 开放世界或地牢地图的边缘与拐角太多,希望用 RuleTile 自动匹配贴图,避免手工摆每个变体
  • 需要用脚本在运行时批量填充区域或生成地图时,要通过 SetTilesBlock 写入并处理坐标转换与刷新

适合人员

  • 使用 Unity 6 开发 2D 游戏、正在拼第一张可玩关卡的客户端工程师
  • 负责 2D 关卡美术与地编、需要把切片图集刷进 Tilemap 并管理多个图层的关卡美术
  • 编写程序化生成、需要通过脚本读写 Tile 并控制碰撞与刷新性能的技术美术或工具开发者