关于 Unity 2D
Unity 2D 是面向 Unity 6+ 2D 游戏开发的技能,指导开发者处理渲染、物理、Tilemap、摄像机、精灵和常见玩法模式。
主要功能
- 01配置 URP 2D Renderer
- 02Tilemap 与 Rule Tile 工作流
- 03设置 2D 物理
- 04配置 Cinemachine 摄像机
- 05精灵导入与图集优化
- 062D 玩法模式指导
适用场景
- 01搭建基于 Tilemap 的平台关卡
- 02配置玩家与地形的 2D 碰撞
- 03设置像素艺术精灵与摄像机
- 04通过图集减少精灵绘制调用
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ juliankerignard/ unity-skills --skill unity-2d安装后在 Claude Code 中输入/unity-2d确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/2d-patterns.md2d-advanced.md2d-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 包
快速入门
- 配置 URP 2D:在 URP Renderer Asset 中添加 2D Renderer Data。在项目的 Graphics Settings 中指定该资源。
- 创建 Tilemap:GameObject > 2D Object > Tilemap > Rectangular。打开 Tile Palette(Window > 2D > Tile Palette)并绘制。
- 添加物理效果:在碰撞 Tilemap 上添加 Tilemap Collider 2D 和 Composite Collider 2D。在 Tilemap 上添加 Rigidbody2D(Static)。
- 配置摄像机:添加 CinemachineCamera 和 CinemachinePositionComposer。将玩家设为 Follow 对象。添加 CinemachineConfiner2D,并使用 CompositeCollider2D 设置边界。
- 导入精灵: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 2DTilemap_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 |