关于 Unity Rapid Proto
Unity Rapid Proto 可将简短的玩法构想转为可玩的 Unity 原型,聚焦单一核心机制,并生成最多 3 个 C# 脚本、场景设置说明和测试清单。
主要功能
- 01将构想缩减为单一核心机制
- 02生成最多 3 个 C# 脚本
- 03提供场景设置说明
- 04附带按下 Play 的测试清单
- 05提供 6 种游戏类型模板
适用场景
- 01在 Unity 中测试玩法机制
- 02创建精简的 2D 或 3D 原型
- 03根据生成脚本搭建场景
- 04按下 Play 后检查原型行为
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ juliankerignard/ unity-skills --skill unity-rapid-proto安装后在 Claude Code 中输入/unity-rapid-proto确认已加载。
附带文件references/proto-templates.md
详细介绍
Unity Rapid Proto
此技能的作用
将一个粗略的游戏创意转化为可游玩的 Unity 原型。不写 GDD,不做规划,不设计架构。直接编写最精简的代码来测试机制。
产出:
- 1 到 3 个 C# 脚本(仅限 MonoBehaviour)
- 场景设置说明(层级、组件、数值)
- 一份“按下 Play”检查清单,用于验证原型是否正常运行
前提条件
- 已有 Unity 项目
- 有一个
Assets/Prototypes/文件夹(如果不存在,则会创建) - 用 1-2 句话描述要制作原型的概念
决策树
Type de prototype ?
|
+-- 3D gameplay ?
| +-- Deplacement + exploration --> Template 3D Platformer
| +-- Tir / combat --> Template FPS
| +-- Placement strategique --> Template Tower Defense
| +-- Course automatique --> Template Runner / Endless
|
+-- 2D gameplay ?
| +-- Deplacement top-down --> Template Top-Down 2D
| +-- Puzzle / grille --> Template Puzzle (grid-based)
| +-- Platformer 2D --> Adapter Template 3D Platformer en 2D
|
+-- Pas sur ?
+-- Commencer en 3D (plus visuel, plus facile a debloquer)
快速开始
- 用户用 1-2 句话描述创意
- 找出核心机制
- 生成脚本(最多 3 个,每个最多 100 行)
- 编写场景设置说明
- 提供测试检查清单
分步指南
第 1 步:理解创意
请用户用最多 1-2 句话描述创意。不要询问更多细节。不要编写设计文档。
提取:
- 主要动词(跳跃、射击、放置、闪避、收集)
- 空间环境(2D/3D、摄像机视角)
- 结束条件(分数、计时器、生存、解开谜题)
第 2 步:确定核心机制
只选择一个机制进行原型制作。如果创意包含多个机制,就选出定义主要游戏循环的那个。
精简示例:
- “一个建造炮塔来抵御一波波敌人的游戏” -> 核心机制:放置炮塔 + 路径跟随
- “一款带有魔法能力和制作系统的平台跳跃游戏” -> 核心机制:移动 + 跳跃(其他内容以后再做)
- “一款带有职业系统的多人 FPS” -> 核心机制:移动 + 射线检测射击
第 3 步:生成最精简的代码
典型结构:
PlayerController.cs:移动 + 主要动作(最多 80 行)- 根据需要添加 1-2 个游戏玩法脚本(每个最多 60 行)
代码规则:
- MonoBehaviour uniquement, pas de ScriptableObject
- Input.GetKey / Input.GetAxis (ancien systeme, plus simple)
- Valeurs hardcodees (pas de SerializeField sauf si vraiment utile)
- Visuels = primitives Unity (Cube, Sphere, Capsule, Plane)
- Pas de namespace, pas de pattern, pas d'event system
- Un seul fichier = une seule responsabilite evidente
- 1 commentaire par bloc non-evident, pas plus
Input System 注意事项(Unity 6+):如果项目使用 New Input System(Unity 6 中的默认设置),请替换
Input.*调用:
Input.GetKey(KeyCode.Space)→Keyboard.current[Key.Space].isPressedInput.GetKeyDown(KeyCode.Space)→Keyboard.current[Key.Space].wasPressedThisFrameInput.GetAxis("Horizontal")→Gamepad.current.leftStick.x.ReadValue()或 InputActionInput.GetMouseButton(0)→Mouse.current.leftButton.isPressed对于快速原型,旧版 Input Manager 更简单。请检查
Edit > Project Settings > Player > Active Input Handling。
第 4 步:编写设置说明
严格按以下顺序提供:
- 场景:创建新场景或使用 SampleScene
- 要创建的对象(包括名称、基本体、位置、缩放)
- 每个对象要添加的组件
- 必要时设置父子层级
- 必要的标签和图层
- 摄像机设置(位置、旋转)
格式:
## Setup Scene
1. Creer un objet **Player** : Capsule a position (0, 1, 0)
- Ajouter `PlayerController.cs`
- Ajouter Rigidbody (Use Gravity: true, Freeze Rotation X/Z)
2. Creer un objet **Ground** : Plane a position (0, 0, 0), scale (5, 1, 5)
- Tag: "Ground"
第 5 步:“按下 Play”检查清单
准确列出按下 Play 后应该发生的情况:
## Test checklist
- [ ] Le joueur se deplace avec WASD/fleches
- [ ] Le joueur saute avec Space et retombe
- [ ] Les ennemis apparaissent toutes les 3 secondes
- [ ] Le score augmente quand on touche un ennemi
- [ ] Game Over s'affiche quand la vie atteint 0
按类型划分的模板
references/proto-templates.md 中有 6 个预配置模板:
| 类型 | 脚本 | 关键对象 |
|---|---|---|
| 3D 平台跳跃 | PlayerController + MovingPlatform | Capsule + CharacterController、Planes、Cubes |
| FPS | FPSController + EnemyHealth + Spawner | Capsule + 子级 Camera、红色 Cubes |
| 俯视角 2D | PlayerMovement2D + Bullet + EnemyPatrol2D | Sprites、Rigidbody2D、正交摄像机 |
| 谜题(网格) | GridManager + Tile | 生成的 Quads、胜利提示 UI Text |
| 跑酷 / 无尽 | RunnerPlayer + ObstacleSpawner + ScoreManager | 自动前进的 Capsule、3 条路线 |
| 塔防 | Turret + EnemyPath + TurretPlacer | Waypoints、OverlapSphere、InvokeRepeating |
严格规则
始终:
- 使用 Unity 基本图形体制作视觉效果(Cube、Sphere、Capsule、Plane)
- 包含胜利/失败条件或反馈循环
- 使用
Input.GetKey/Input.GetAxis(旧版输入系统) - 将数值硬编码(速度、生命值、伤害)
- 将代码写入
Assets/Prototypes/<NomPrototype>/ - 在脑中测试每个脚本:能否编译?是否会产生可见效果?
绝不:
- 每个原型超过 3 个脚本
- 每个脚本超过 100 行(
PlayerController不超过 80 行) - 使用架构模式:不使用 SO、事件、管理器或单例
- 编写文档或 README
- 添加大量注释(每个不明显的代码块最多 1 行)
- 使用 SerializeField,除非场景工作流绝对需要
- 使用命名空间、接口、抽象类或泛型
- 使用外部资源、额外软件包或 Asset Store
相关技能
- 原型已经可用,想要进入生产阶段?使用
/unity-code-gen(Unity Code Gen)按合适的模式重构 - 原型中有错误?使用
/unity-debug(Unity Debug) - 需要为原型制作自定义着色器?使用
/shader(Unity Shader Generator) - 制作 2D 原型(平台跳跃、俯视角)?使用
/2d(Unity 2D)了解详细模式
故障排除
| 问题 | 解决方案 |
|---|---|
| 玩家无法移动 | 检查脚本是否附加到正确的 GameObject。检查是否存在 CharacterController 或 Rigidbody。 |
| 玩家穿过地面 | 检查地面是否有 Collider。检查玩家是否有 Collider 和 Rigidbody(或 CharacterController)。 |
| 跳跃无效 | 检查地面检测:射线必须指向 Vector3.down,距离略大于玩家身高的一半。 |
| 碰撞检测无效 | 检查两个对象中至少有一个是否带有 Rigidbody。如果使用 OnTriggerEnter,Collider 必须勾选“Is Trigger”。 |
| 摄像机抖动 | 将摄像机逻辑从 Update 移到 LateUpdate。 |
| 敌人没有出现 | 检查是否已分配预制件,或 Instantiate 是否使用了正确的引用。检查是否在 Start 中调用了 InvokeRepeating。 |
| 分数没有显示 | 检查 Text 或 TextMeshProUGUI 引用。检查 Canvas 是否有 EventSystem。 |
| 原型运行太慢 | 删除 Update 中的 Debug.Log。检查是否大量调用了 Instantiate/Destroy(必要时改用基础对象池)。 |
评论
支持 Markdown