mcpField
U
Unity Rapid Proto

Unity Rapid Proto

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

关于 Unity Rapid Proto

Unity Rapid Proto 可将简短的玩法构想转为可玩的 Unity 原型,聚焦单一核心机制,并生成最多 3 个 C# 脚本、场景设置说明和测试清单。

主要功能

  1. 01将构想缩减为单一核心机制
  2. 02生成最多 3 个 C# 脚本
  3. 03提供场景设置说明
  4. 04附带按下 Play 的测试清单
  5. 05提供 6 种游戏类型模板

适用场景

  1. 01在 Unity 中测试玩法机制
  2. 02创建精简的 2D 或 3D 原型
  3. 03根据生成脚本搭建场景
  4. 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. 用户用 1-2 句话描述创意
  2. 找出核心机制
  3. 生成脚本(最多 3 个,每个最多 100 行)
  4. 编写场景设置说明
  5. 提供测试检查清单

分步指南

第 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].isPressed
  • Input.GetKeyDown(KeyCode.Space) → Keyboard.current[Key.Space].wasPressedThisFrame
  • Input.GetAxis("Horizontal") → Gamepad.current.leftStick.x.ReadValue() 或 InputAction
  • Input.GetMouseButton(0) → Mouse.current.leftButton.isPressed

对于快速原型,旧版 Input Manager 更简单。请检查 Edit > Project Settings > Player > Active Input Handling。

第 4 步:编写设置说明

严格按以下顺序提供:

  1. 场景:创建新场景或使用 SampleScene
  2. 要创建的对象(包括名称、基本体、位置、缩放)
  3. 每个对象要添加的组件
  4. 必要时设置父子层级
  5. 必要的标签和图层
  6. 摄像机设置(位置、旋转)

格式:

## 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 + MovingPlatformCapsule + CharacterController、Planes、Cubes
FPSFPSController + EnemyHealth + SpawnerCapsule + 子级 Camera、红色 Cubes
俯视角 2DPlayerMovement2D + Bullet + EnemyPatrol2DSprites、Rigidbody2D、正交摄像机
谜题(网格)GridManager + Tile生成的 Quads、胜利提示 UI Text
跑酷 / 无尽RunnerPlayer + ObstacleSpawner + ScoreManager自动前进的 Capsule、3 条路线
塔防Turret + EnemyPath + TurretPlacerWaypoints、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