シリーズ: Unity 初心者が Cursor の AI エージェントと3DアクションRPGを作る
- 第0回: ゲームプログラムが書けない私が、生成AIでゲームを作り始めた ― Phaser で2Dを1本、次は Unity × Cursor で3Dへ https://qiita.com/yasuharusmooth/items/8e8bd09d7f111fffbe40
- 第0.5回: 作りたい3DアクションRPGを、AIで作ったイメージボード3枚で紹介します ― いまできていること/これから作ること https://qiita.com/yasuharusmooth/items/aa0a8e2de2dae070e180
- 第1回: Unity 初めてで、AI に使い方を教わったのは最初の2回だけ。あとはエディタ作業ごと任せた話 https://qiita.com/yasuharusmooth/items/f2058b38d412b03d8c80
- 第2回: インスペクターの参照設定を人がやる意味はなかった ― Cursor × Unity MCP でエディタ設定まで AI に任せる(この記事)
- 第3回: AI エージェントを増やしたら数字の確認ばかりに ― 「判断だけ聞いて、数字は仮で入れて」にした話 https://qiita.com/yasuharusmooth/private/8ba5ce8473f161502950
- 番外編: ゲームのプログラムが書けなくても、主人公の3Dモデルは用意できた:Gemini → Meshy → Mixamo → Unity の流れ https://qiita.com/yasuharusmooth/private/35806e8a2ec0c0c94093
Cursor が C# で実装したものを、インスペクター上で指定する作業。これは人でやる意味が無いと思ったので、エージェントに任せました。今回は、その「エディタ上の設定作業」の話です。
この記事で分かること
- Unity MCP を使って、Inspector の参照設定までエージェントに任せたときの様子
- エージェントにエディタを触らせるときに、ルールに書いておいたこと
- 実際に任せた設定作業の例
結論(3行)
- Cursor が書いたスクリプトの参照をインスペクターで指定する作業は、人がやる意味が無いと感じて、エージェントに任せました。
- 最初から Unity MCP で Cursor と Unity エディタをつなぐ前提でやっていて、配置・設定・保存はエージェントが起動中のエディタ経由で行います。
- ルールには「シーンや Prefab のファイルを手で書き換えない」「コンパイル後はエラーを確認する」と書き、人は Play で触って判断します。
Unity MCP とは
MCP(Model Context Protocol)は、AI のツールと外部のアプリをつなぐための共通の仕組みです。Unity MCP は、これを使って Cursor などの AI と起動中の Unity エディタをつなぐものです。
正直に言うと、私は最初から MCP ありきでやっていたので、MCP なしの場合と比べたわけではありません。それでも、コードを書くだけでなく、エディター上の設定(インスペクターでの参照指定など)までエージェントに任せられたのは、MCP でエディターとつないでいたからだと思っています。
この画面の設定を、自分でやらなくてよかった

これは Body Motion Set というデータの Inspector(選んだ物の設定画面)です。待機・移動・ジャンプ・攻撃などの動作ごとに、どのアニメーションクリップを再生するか(右列の参照)と、再生時間などの数値を持っています。ScriptableObject(設定値を Unity のファイルとして持つ仕組み)で、C# は programmer(実装担当のエージェント)が書いています。
人がやるなら、Project(素材の一覧)から右列の枠へ、クリップを1つずつドラッグすることになります。
この割り当ては、エージェントが起動中の Unity 経由で更新・保存した記録が ADR(設計の判断を1件ずつ残すメモ)に残っています。ADR-0047 では待機のクリップを替えて保存し、ADR-0067 ではクリップ6本を差し替えて、ループ再生の設定(Loop Time)もオンにしています。
このインスペクターの設定作業をやらなくて良いのは、結構良いことだと感じていました。
ルールに書いたこと
エディタを触らせるにあたって、常に読み込ませるルールに分担を書いています。
- C# の作成と修正は programmer が行う。ユーザーにスクリプト本文の手書きを求めない。
- ユーザーが採用した仕様の Hierarchy、Inspector の値、Prefab、Tag、Layer、参照割当、ScriptableObject アセットは programmer が、起動中の Unity エディタ経由で作る。シーンと Prefab の YAML は手で書き換えない(ADR-0004)。
シーンや Prefab(使い回せる部品)の中身は YAML というテキスト形式ですが、それを直接書き換えず、エディタ経由で作らせます。programmer のルールには、作業後の確認と報告の形も書きました(思考の5番と出力の4番)。
5. コンパイル後は Unity MCP の `read_console` でエラーを確認する。
(中略)
4. 起動中の Unity へ入れた配置(オブジェクト、コンポーネント、Inspector の値、参照)。シーンと Prefab の YAML は手で書き換えない
read_console は Unity のコンソール(エラーや警告の一覧)を読む機能です。1つの依頼の流れはこうなります。
任せた設定作業の例
ADR に残っている中から、エディタ上の作業をいくつか挙げます。
| ADR | 日付 | 内容 |
|---|---|---|
| ADR-0047 | 10-06 | 待機モーションの割り当てを替えて保存 |
| ADR-0058 | 10-06 | キャラ定義のデータを、シーンのキャラと Prefab に割り当て |
| ADR-0062 | 10-07 | 敵の頭上に体力の表示を追加し、敵の Prefab にも入れる |
| ADR-0067 | 10-07 | モーション6本の割り当てを差し替え、Loop Time をオン |
| ADR-0085 | 10-08 | 店の画面で、各アイテムにアイコンを設定して保存 |
どれも「仕様は決まっていて、あとはエディタで指定するだけ」の作業です。
人がやること
任せたあとに私がやるのは、Play(エディタ上でゲームを動かすこと)で触って、手触りと見た目を判断することです。
ただ、任せられるようになると今度は別の問題が出てきました。エージェントを役割ごとに分けすぎて、私の確認作業が増えたことです。
まとめ
- Cursor が書いたスクリプトの参照をインスペクターで指定する作業は、人がやる意味が無いと思い、エージェントに任せました。
- 最初から Unity MCP 前提で、エディタ上の配置・設定・保存はエージェントが行い、ルールで「YAML を手で書き換えない」「エラーを確認する」と決めています。
- 次回は、任せすぎて増えた確認作業をどう減らしたかです。→ https://qiita.com/yasuharusmooth/private/8ba5ce8473f161502950
アセットクレジット
このプロジェクトでは、Meshy の3Dモデル、Mixamo(Adobe)のリギングと一部のモーション、Unity Asset Store の複数の有料アセットを使用しています。
前作・SNS
- 前作の2Dゲーム「Princess Vanguard」(ブラウザで遊べます)
- 開発中の3Dアクション(YouTube): https://youtu.be/SGDOwYSBr2s
- X: https://x.com/PuddingAthlete