mcpField
U
Unity 2D

Unity 2D

github.com/juliankerignard开发853 次安装32 周前更新
代码仓库

关于 Unity 2D

Unity 2D 是面向 Unity 6+ 2D 游戏开发的技能,指导开发者处理渲染、物理、Tilemap、摄像机、精灵和常见玩法模式。

主要功能

  1. 01配置 URP 2D Renderer
  2. 02Tilemap 与 Rule Tile 工作流
  3. 03设置 2D 物理
  4. 04配置 Cinemachine 摄像机
  5. 05精灵导入与图集优化
  6. 062D 玩法模式指导

适用场景

  1. 01搭建基于 Tilemap 的平台关卡
  2. 02配置玩家与地形的 2D 碰撞
  3. 03设置像素艺术精灵与摄像机
  4. 04通过图集减少精灵绘制调用

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/juliankerignard/unity-skills --skill unity-2d

安装后在 Claude Code 中输入/unity-2d确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
2d-patterns.md
2d-advanced.md
2d-rendering.md

详细介绍

Unity 2D

此技能的功能

指导如何在 Unity 6+ 中开发 2D 游戏:设置 Tilemap 和 Rule Tile、2D 物理(Rigidbody2D、Collider2D)、管理精灵和 Sprite Atlas、使用 URP 进行 2D 光照(Light2D、Shadow Caster 2D)、配置 Cinemachine 摄像机,以及游戏玩法模式(平台跳跃、俯视视角、解谜)。还涵盖像素艺术、视差滚动和 Tilemap 优化。

前提条件

  • Unity 6.0+,并配置好 URP 和 2D Renderer
  • 2D Tilemap Extras 包(Rule Tile、Animated Tile)
  • 用于 2D 摄像机的 Cinemachine 包
  • 如需使用 Sprite Swap,则需要 2D Sprite 和 2D Animation 包

快速入门

  1. 配置 URP 2D:在 URP Renderer Asset 中添加 2D Renderer Data。在项目的 Graphics Settings 中指定该资源。
  2. 创建 Tilemap:GameObject > 2D Object > Tilemap > Rectangular。打开 Tile Palette(Window > 2D > Tile Palette)并绘制。
  3. 添加物理效果:在碰撞 Tilemap 上添加 Tilemap Collider 2D 和 Composite Collider 2D。在 Tilemap 上添加 Rigidbody2D(Static)。
  4. 配置摄像机:添加 CinemachineCamera 和 CinemachinePositionComposer。将玩家设为 Follow 对象。添加 CinemachineConfiner2D,并使用 CompositeCollider2D 设置边界。
  5. 导入精灵:Filter Mode 设为 Point(像素艺术)或 Bilinear。PPU = 瓷砖尺寸(16、32……)。创建 Sprite Atlas 以进行批处理。

决策树

Type de jeu 2D ?
|
+-- Platformer ?
|   +-- Classique ----------> Rigidbody2D + Tilemap + Coyote time
|   |                         (voir references/2d-patterns.md et 2d-advanced.md)
|   +-- Metroidvania -------> idem + abilities unlock
|                              + Cinemachine Confiner2D par zone
|
+-- Top-down ?
|   +-- Action (Zelda) -----> Rigidbody2D, 8-dir, GravityScale=0
|   +-- RPG / exploration --> idem + Tilemap layers + dialogue system
|
+-- Puzzle / match ?
|   +-- Grid-based ---------> Tilemap ou Grid custom, pas de physics
|
+-- Visual novel / UI-heavy ?
|   +-- --------------------> UI Toolkit (/uitk), pas de physics 2D
|
+-- Besoin de lumiere / ombres ?
    +-- --------------------> URP 2D Renderer + Light2D
                              (voir references/2d-rendering.md)

分步指南

步骤 1:设置 URP 2D Renderer

创建 2D Renderer Data 资源(Create > Rendering > URP 2D Renderer)。在 URP Asset 中将其设为默认 Renderer。检查摄像机的 Inspector,确认其使用 Renderer 2D。

步骤 2:创建 Tilemap

在同一个 Grid 上按 图层 组织:

  • Tilemap_Background(Sorting Layer: Background,Order 0)
  • Tilemap_Ground(Sorting Layer: Tilemap,Order 0)+ Tilemap Collider 2D + Composite Collider 2D
  • Tilemap_Foreground(Sorting Layer: Foreground,Order 0)

使用 Rule Tile(2D Tilemap Extras)为平台和墙壁实现自动铺砖。

步骤 3:配置 2D 物理

在玩家对象上:Rigidbody2D(Dynamic,Freeze Rotation Z)。添加 CapsuleCollider2D 或 BoxCollider2D。在平台上:添加 Composite Collider 2D(Geometry Type = Polygons)和 Rigidbody2D Static。使用 Physics Material 2D 设置摩擦力/弹性。

步骤 4:设置 Cinemachine 摄像机

使用 CinemachinePositionComposer(Dead Zone、Lookahead)设置 CinemachineCamera。添加 CinemachineConfiner2D,并关联一个用于定义关卡边界的 PolygonCollider2D/CompositeCollider2D。对于像素艺术:启用 Pixel Perfect Camera(2D Pixel Perfect 包)。

步骤 5:导入并优化精灵

导入精灵表。配置 Sprite Editor,使用 Grid by Cell Size 进行切片。按区域/类别创建 Sprite Atlas(参见 references/2d-rendering.md)。对于像素艺术:Filter = Point,Compression = None,PPU = 瓷砖尺寸。

严格规则

  • 始终使用 Rigidbody2D.linearVelocity(Unity 6+),绝不要使用 velocity
  • 始终在 FixedUpdate 中处理物理,在 Update 中处理输入
  • 始终在用于碰撞的 Tilemap 上使用 Composite Collider 2D
  • 始终组织好 Sorting Layer(Background < Tilemap < Characters < Foreground < UI)
  • 绝不要在 Tilemap 上使用 Rigidbody2D Dynamic(使用 Static 或 Kinematic)
  • 绝不要在生产环境中使用未纳入 Sprite Atlas 的单个精灵
  • 绝不要在同一个 GameObject 上混用 3D 和 2D Rigidbody
  • 绝不要通过负缩放来翻转精灵:使用 SpriteRenderer.flipX

相关技能

  • /proto:快速进行 2D 游戏玩法原型设计
  • /unity-code-gen:生成 C# 脚本(控制器、生成器)
  • /anim:Animator、Sprite 动画、Timeline
  • /shader:自定义 2D 着色器(描边、溶解、水面)
  • /perf-audit:优化绘制调用、批处理、Sprite Atlas

故障排除

问题原因解决方案
Sprite 不可见Sorting Layer/Order 设置不正确检查 SpriteRenderer 中的 Sorting Layer 和 Order in Layer
Tilemap 碰撞失效缺少 Composite Collider为 Tilemap 添加 Composite Collider 2D 和 Static Rigidbody2D
玩家在墙上滑动与侧面 tiles 之间存在摩擦在玩家身上使用 Friction=0 的 Physics Material 2D
2D 光照无效果缺少 2D Renderer检查 URP Asset 是否使用了 2D Renderer Data
Sprite 模糊(像素艺术)导入设置不正确Filter Mode = Point,Compression = None
Camera 卡顿移动不在 FixedUpdate 中进行将 Rigidbody2D 的 Interpolation 设为 Interpolate
Tiles 之间有视觉缝隙边缘存在抗锯齿确保 PPU 一致、启用 Pixel Snap,且不使用小数缩放
Draw calls 过高未进行批处理创建 Sprite Atlas,检查 URP 的 Dynamic Batching

评论

支持 Markdown