>_ DevTrendsja

言語

ホーム

言語

セクション

フロントエンド バックエンド モバイル DevOps AI / ML ゲーム開発 ブロックチェーン 組み込み セキュリティ
C-sharp

UnityにClaudeとCursorをMCPで直接接続する方法

https://github.com/IvanMurzak/Unity-MCP/raw/main/docs/img/promo/ai-developer-banner.jpg

多くの開発者は、ニューラルネットワークをスマートクリップボードのように使うことに慣れています。コンソールからエラーをコピーしてチャットに貼り付け、修正されたC#スクリプトを受け取り、プロジェクトに貼り付ける。しかし、クラスの書き直し以上のこと—30個のプレハブを円形に配置したり、十数個のマテリアルを作成したり、エディタ内で直接テストを実行したりする必要がある場合、こうしたping-pong方式は多くの時間を消費するようになります。

Unity-MCPリポジトリは、このルーティンを根本的に解決します。このプロジェクトは、Unityを人気のアシスタントとModel Context Protocol経由で接続します。これはAnthropicによるオープン規格で、言語モデルをパッシブなアドバイザーから開発環境内のアクティブ実行者として変えます。

https://github.com/IvanMurzak/Unity-MCP/blob/main/docs/img/editor/ai-game-developer-windows.png?raw=true

UnityとMCPでできること

このリポジトリには70以上の готовых инструментов が含まれており、論理的なグループに整理されています。アシスタントはファイル構造、シーンハイアラーキー、Roslynコンパイラ、さらにはプロファイラーにアクセスできます。

CursorやClaude Codeで簡単な指示を書くことができます:「互いに積み重なった3つのスフィアを作成し,黄金色のメタリックマテリアルを適用してください」。モデルは必要なAPIを自律的に呼び出し、マテリアルアセットを作成し、シェーダーパラメータを設定し、オブジェクトをシーンに追加します。

https://github.com/IvanMurzak/Unity-MCP/blob/main/docs/img/editor/setup-skills.jpg?raw=true

以下は、このプラグインが処理する主な操作グループです:

  • UPMによるアセットとパッケージの管理
  • GameObject、コンポーネント、プレハブの操作
  • EditModeとPlayModeでのテスト実行と、チャットへのレポート配信
  • длительной 再コンパイルなしのRoslynによる動的C#コード実行
  • カメラまたはScene Viewからのスクリーンショット取得による視覚的結果の評価
  • 組み込みプロファイラーを使用したパフォーマンスとメモリのメトリクス収集

特に便利なのはリフレクションサポートです。ニューラルネットワークはコードベース内のメソッドを見つけ出し、プライベートメソッドや外部DLLにあるメソッドであっても、必要な引数で呼び出すことができます。

サーバーとデータ交換の仕組み

アーキテクチャは2つの部分で構成されています:Unity用のC#プラグインと、バイナリまたはDockerコンテナとして実行される個別のMCPサーバーです。クライアント(例:Claude DesktopまたはVS Code)はstdioまたはHTTPプロトコルでサーバーと通信し、サーバーはコマンドを実行中のUnityインスタンスに渡します。

https://github.com/IvanMurzak/Unity-MCP/raw/main/docs/img/ai-connector-window.gif

CLIによるクイックスタート

プロジェクトには、プラグインインストールとモデルのスキル生成を自動化する便利なCLIパッケージが含まれています:

npm install -g unity-mcp-cli
unity-mcp-cli install-plugin ./MyUnityProject
unity-mcp-cli open ./MyUnityProject

CLIが不要な場合は、GitHub releasesから готовую .unitypackage をダウンロードするか、OpenUPM経由でパッケージを追加できます。

厳格なパス要件に注意してください。Unityプロジェクトへのパスにはスペースを含めないでください。含まれていない場合、ローカルサーバーは単に動作を拒否します。

カスタムツールの作成

プラグインは拡張が簡単です。ニューラルネットワークにゲームの特定のロジックへのアクセスを提供するには、通常のC#メソッドを書き、AiToolTypeAiTool 属性でマークするだけです。

Unity APIへの呼び出しは、サーバーからのリクエストがバックグラウンドスレッドで到着するため、メインスレッド実行でラップする必要があります:

[AiToolType]
public class LevelBuildingTools
{
    [AiTool("spawn-enemy-wave", Title = "Spawn Enemy Wave")]
    [Description("Спавнит волну врагов заданного типа в указанных координатах")]
    public string SpawnWave(
        [Description("Имя префаба врага")] string enemyType,
        [Description("Количество врагов")] int count
    )
    {
        return MainThread.Instance.Run(() =>
        {
            EnemySpawner.Instance.Spawn(enemyType, count);
            return $"Успешно заспавнено {count} врагов типа {enemyType}";
        });
    }
}

Description 属性が重要な役割を果たします。モデルはこれらの説明を読み取って、ツールをいつ呼び出すか、また引数として渡すデータ型を理解します。

Runtimeとビルドでの動作

同様の統合の多くはEditorモードに制限されています。Unity-MCPの著者はさらに踏み込み、runtimeクライアントを追加しました。サーバーをビルドしたゲームに直接埋め込み、言語モデルにNPCコントロールを引き渡すことができます。

コードでのruntimeプラグインの初期化は次のようになります:

var mcpPlugin = UnityMcpPluginRuntime.Initialize(builder =>
    {
        builder.WithConfig(config =>
        {
            config.Host = "http://localhost:8080";
            config.Token = "your-token";
        });
        builder.WithToolsFromAssembly(Assembly.GetExecutingAssembly());
    })
    .Build();

await mcpPlugin.Connect();

リポジトリには、すべての移動ロジックが外部LLMに委任されたチェスボットの例が含まれています。モデルはMCP Tool経由で現在の盤面状態をリクエストし、次の手を返します。

実践的なシナリオ

実際には、このツールは3つの分野で最高の成果を示します:

第一に、ルーティン的なレベルとUIレイアウトです。テキスト説明から基本的なシーンを組み立てるのは、プリミティブを手動で配置するよりもはるかに高速です。

第二に、自動テストとバグ発見です。モデルはEditModeテストを実行し、失敗したテストのスタックトレースを読み取り、ソーススクリプトを開き、エラーを修正し、検証を再実行できます。

第三に、プロファイリングです。メモリとレンダリングツールは、モデルのコンテキストに直接フレームタイミングの正確な数値を渡し、ボトルネックの迅速な特定に役立ちます。

今すぐこのプロジェクトが役立つ人

ソロでプロトタイプを作成しているか、小規模なインディーゲームを運営している場合、Unity-MCPはルーティンタスクで多くの時間を節約します。参入障壁は最小限です:CLIをインストールし、お気に入りのコードエディタを選択し、シーンへのアクセス権を備えた動作するアシスタントをすぐに手にします。

数十人の開発者がいるエンタープライズチームにとって、ソリューションにはある程度の注意が必要です。プロジェクト設定を通じて構成をロックダウンし、Dockerでリモートにサーバーが展開されている場合はアクセス権を監視する必要があります。リポジトリは積極的に開発されており、オープンなApache 2.0ライセンスを使用し、pull requestを歓迎しています。

関連プロジェクト