UnityMPC + Roo Code + Claude 3.7 Sonnetでエディタ操作をラクにする

はじめに


Unityを使う時にスクリプトは現段階である程度でAIに任せられる状況ですが、エディタのシーンの操作に関してはまだ手作業で行う必要があります。

なので今ブームが来ているMCP、これを使ってUnityもある程度自動化して楽できないか探ってみました。

どのUnityMCP?


UnityとAIモデルを連携できるMCPですが、Unity公式のMCPというのは現時点で存在せず全て有志が各々作っている状態です。

そのためUnityのMCPを提供しているリポジトリは

Arodoid/UnityMCP

CoderGamester/mcp-unity

justinpbarnett/unity-mcp

…と色々あるので今回は Arodoid/UnityMCP で自動化を試してみようと思います。

セットアップ


セットアップはこちらを参考にしてみてください。

 

OpenRouterでClaude 3.7 Sonnetを選択するかAnthropicのAPIを使ってClaude 3.7 Sonnetを使うようにしてください、他のモデルでも構いませんが後述の画像認識に対応したモデルだと良い感じに動いてくれそうです。

 

MCPサーバーのセットアップに詰まったらRoo Codeに直接セットアップをお願いしてみてください、AIが自動でうまくセットアップしてくれるのでVSCodeを再起動したらMCPサーバーが使えるようになっていると思います。

実際に使ってみる



今回はUnityで設定することの多いUI周りの再現をどれだけ自動化できるか確かめてみます。

 

左側の参考画像を送るとRoo Code経由でClaudeが読み込んでくれます、実際に実行するとプロンプトにはパズドラという単語は出してないのにも関わらず[「パズドラのようなUIが表示されてるからUI要素ごとに作っていく」と回答されました。また、UnityMCPサーバーが使えるようになっていると自動的にMCPを使おうとします、デフォルトではMCPツールの使用にユーザーの許可を求めてきますが自動承認にしておけば勝手にツールを使ってくれます。

こんな感じに自動でコマンドを実行してエディタの状態を取得したりエディタへ変更を加えたりしてくれます。

そして1,2回ほど修正を依頼して最終的に出来上がったものがこちらになります。


そこそこ要素としては揃っているUIが出来上がりました。

 

サイズ感などが合っていなかったためそこだけは手作業で修正しましたが、それ以外は全てClaudeとRoo Codeが自動で行ってくれました。良い感じにUIが出来上がっているのも素晴らしいのですが、インスペクターのCanvas以下の構造と名前もAI自らが考えてくれています。更に各UIはちゃんとAnchorが付けられているのも驚きです。

 

また自動的に処理を実行しているときにUnityMCPも未完成のためボタンなどのUI要素を直接設定できないという問題が発生していたのにも関わらず、AIは代替案として「Sprite RendererでUIを仮で作るから置き換えてね」と言った対応を取りました。
こういった事ができるよう多少コストが掛かってもClaude 3.7 Sonnetのようなマルチモーダルで賢いモデルを使っておくべきだと感じました。

コストと課題


今回UIを再現するのにかかった費用は$2.7050でした。たった数回のやり取りで400円ほど掛かってしまっています。おそらく画像認識を行うこと自体のコストが高く、それがAPIコストにそのまま反映されてしまったのだと思います。精度は下がるかもしれませんがもう少しコストの低いモデルを使うか、AIの利用を必要最低限に抑えるなどの工夫は必要になりそうです。

 

課題としてはこのUnityMCPでは高度な機能を備えているわけではないので、TextMeshProやボタンなどMCPに実装されていないUIのコンポーネントを参照することはできない、プロジェクト自体にTextMeshProがインポートされている状態でもMCPを介してAIモデルが読み取ることができない事や、Unityエディタのゲームビューの解像度や比率をおそらく読み取れないのでレイアウト崩れやサイズ感などが合っていないことがあります。

 

更に修正をかけてもAIが見ている景色と人の目で見る画面では一致していないことがあり、修正を依頼しても望んだ結果が得られるとは限らない状態です。全体的なサイズ感の調整であったり、レイアウトグループの作成によるUIの管理などは人の手で行った方が正確だと感じました。

 

ただ、軽微な修正を大量に行う時には正確で便利な使用感になっています。例えば今回ではパズルのブロック部分がすべて独立してアンカーが設定されているが、ゲームとして作るときには動的になるのでアンカーの変更などをブロック全て(30個)に適用する時にAIに変更してと頼むと修正を行ってくれます。

 

簡易的なプロトタイプ制作と同じ作業を大量に行わせる用途には問題なく使えると感じました。

まとめ


UIのプロトタイプ作りがかなり楽になる結果となりました。

特に自然言語でAIに作りたいものを指示することができ、今まではAIがUIの構成要素をテキストで書き出し人間が手作業でUIを作る必要があったが、そのままAIが考えているUIを直接Unityに反映することができるので時間短縮効果は期待できそうだと思います。

 

上記ブログの内容に少しでも興味がありましたら、お気軽にご連絡ください。

弊社のエンジニアがフレンドリーに対応させていただきます。