Communitygithub.com

edemaistre/unity-plugin

MCPサーバー「scenario-unity」が接続されている際に、Scenarioのモデルを使用して画像、動画、3Dモデル、PBRマテリアル、スカイボックス、オーディオを生成し、3Dモデルの編集、テクスチャ再適用、メッシュ再構築、リギング、アニメーション、分割を行い、結果を開いているUnityシーンに配置、またはそのシーンを検査・編集するためのスキル。

unity-plugin とは?

このスキルは、Unityエディタ内で動作するMCPプロトコルサーバー「Scenario for Unity」と連携し、AIエージェントがScenarioの生成AIモデルを活用して、ゲーム開発ワークフローを効率化するためのツールです。エージェントは、画像、動画、3Dモデル、PBRマテリアル、スカイボックス、オーディオを生成し、その結果をUnityのシーンに直接配置できます。また、3Dモデルの編集(テクスチャ再適用、メッシュ再構築、リギング、アニメーション、分割)や、シーン内のオブジェクトの操作(作成、移動、削除、コンポーネント設定)も可能です。コスト管理機能も備えており、生成前に見積もりを取得し、ユーザー設定の予算を超える場合は承認を待機するなど、安全な動作を保証します。主なユースケースとしては、プロトタイピング、アセット生成、シーンの編集やウォーカブルワールドの構築などが挙げられ、AIエージェントがUnityプロジェクトのアセットフォルダに直接ファイルを生成し、シーンを編集するため、ユーザーの手作業を大幅に削減します。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/edemaistre/unity-plugin/tree/HEAD/Packages/com.scenario.unity/Documentation~/agent-skill

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Scenario for Unity: エージェントガイド

ユーザーがScenarioウィンドウで「エージェントがScenarioとこのプロジェクトを使用できる」をオンにしている間、UnityエディタはこのMCPサーバーを提供します。すべてのツールはエディタ内で動作します。生成されたファイルはプロジェクトのAssets/に配置され、シーンの編集はアンドゥステップとして記録され、有料の呼び出しはウィンドウと同じ価格チェックと承認ルールを経由します。

開始

  1. scenario_status: アカウント、課金対象のScenarioプロジェクト、支出が有効かどうか、1回あたりの制限とセッション予算の残高、レンダーパイプライン、2Dまたは3D、アクティブなシーンを返します。サインアウトと表示された場合は、ユーザーにScenarioウィンドウからサインインするよう依頼してください。それ以外の操作は機能しません。
  2. scene_info: 階層パス、コンポーネント、選択状態を返します。これらのパスをtargetおよびpathとしてすべての場所で使用してください。

料金

コストはクリエイティブユニット (CU) で表されます。

  • estimate は無料で、リクエストの正確な価格を返します。ユーザーがコストを気にしている場合や、リクエストが大きい(動画、3D、多数の画像)場合は、generate または workflow_run の前に呼び出してください。
  • generate、workflow_run、prompt_spark は有料です。ユーザーが予算を指定した場合は max_cu を渡してください。それを超えると何も送信されません。
  • 1回あたりの制限またはセッション予算を超えた場合、呼び出しはUnityでのユーザーの承認を最大2分間待機します。待機中であることをユーザーに伝えてください。「未承認」は何も送信されなかったことを意味します。ユーザーが要求しない限り、再試行しないでください。
  • 未知の結果。 有料の呼び出しが「結果が不明です」を返した場合、リクエストが実行され課金された可能性があります。同じリクエストに対して決して再度呼び出さないでください。1分後に local_id を指定して jobs を呼び出してください。
  • 支出がオフの場合(設定または SCENARIO_NO_SPEND=1)、有料ツールは送信前に拒否されます。価格照会、ブラウジング、インポート、アップロード、シーンツールは引き続き動作します。
  • upload_reference、import_asset、models_find、motions_find、model_schema、estimate は無料です。

モデルを選ぶ

  • output_type(image、video、model3d、motion、audio、material、skybox)を指定した models_find は、チームの独自トレーニングモデルを含むカタログを一覧表示します。
  • recommend_for_prompt を指定した models_find は、プロンプトに対するScenarioのランク付けされた選択肢を、コストと速度に関するメモとともに返します。ユーザーがモデルを指定しなかった場合は、こちらを優先してください。
  • model_schema は入力項目(名前、オプション、範囲、デフォルト値、ファイルが必要な入力)を提供します。スキーマにリストされているパラメータのみを送信してください。未知の名前は価格照会前に拒否されます。

生成と配置

generate はリクエストの価格を計算し、一度送信し、待機し、ファイルをインポートして結果を配置します。

output_typetarget なしtarget あり
image新しいクアッドまたはスプライト(2Dプロジェクト内)のテクスチャ(スプライト)そのSpriteRenderer、Image、RawImage、またはレンダラーに設定
materialアクティブなパイプライン用のマテリアル(マップ付き)を新しい球体に設定ターゲットのレンダラーとその子のレンダラーに設定
skyboxSkybox/Panoramic マテリアルをシーンスカイボックスとして設定同じ
model3dGLBをプレハブとしてインポート、シーンビューのピボットポイントにインスタンス化ターゲットの隣にインスタンス化
motionアニメーターコントローラー(クリップごとに1つの状態)を持つアニメーションGLBをピボットポイントにインスタンス化。Playモードで再生されますターゲットの隣にインスタンス化
audio新しいAudioSourceにAudioClipターゲットのAudioSourceに追加(なければ追加)
video新しいスクリーンクアッドにVideoClipターゲットのVideoPlayerに追加(なければ追加)

結果には、files(Unityアセットパス)、placed(階層パス)、asset_ids(Scenario ID、入力として再利用可能)、job_id、quoted_cu、charged_cu が含まれます。place: false を指定すると、シーンに触れずにインポートのみ行います。呼び出しが45秒を超えてブロックされることはありません。3D、動画、長いオーディオは通常 next(まだ実行中)で応答します。ジョブは継続し、インポートと配置を自身で行います。local_id と wait_seconds を指定して jobs を呼び出し、完了するまで待機し、再度生成しないでください。バッチの場合は、各リクエストを wait: false で送信し、その後 jobs で追跡します。

ファイル入力(参照画像、開始フレーム、3Dモデル、オーディオ)は、ScenarioアセットIDまたはUnityアセットパスで受け付けます。Unityファイルは一度無料でアップロードされます。

3D結果に関する期待事項:

  • 結果ごとに1つのモデル: 一部のモデルが追加するOBJ、MTL、PBRマップのコピーはスキップされます。FBX、Blender、VOXの結果はGLBとして到着します。
  • 歩行と走行のファイルを返すリグ(Meshy Rigging、includeRiggedModel 付きTripo)は、すべてのクリップを保持するコントローラーを持つ1つのモデルです。センチメートル単位で書き込まれたリグは1%のスケールで配置されます。
  • ガウシアンスプラット(TripoSplat、HY World、Marble)は .ply または .spz として保存され、配置されません。Unityにはガウシアンスプラットレンダラーパッケージが必要であることをユーザーに伝えてください。
  • Meshy 7.1 はデフォルトで同じ価格で30,000トライアングルのリメッシュを行います。完全なメッシュ(約100万トライアングル)が必要な場合は shouldRemesh: false を送信してください。

ステップを連鎖させる

ある結果をファイル入力として次のモデルに渡します:

  • 画像から3Dへ: 画像を generate し、次に画像のアセットIDを使用してmodel3dモデル(例: Meshy 7.1 Image to 3D)を生成します。
  • 画像からマテリアルまたはスカイボックスへ: PATINA Image to Maps、HY World Image to Skybox。
  • 画像から動画へ: 画像を開始フレームとするimg2videoモデル。
  • クリーンアップ: 背景除去、アップスケール、ベクター化、ピクセル化。
  • 3Dテクスチャ: テクスチャ再適用(Meshy 7 Retexture、Tripo 3.0 Texturing、Tencent Texture Edit、Trellis 2、YVO3D)、UVアンラップ(Tripo Smart UV、Meshy、Tencent)。
  • 3D形状: プロンプトによる編集(Claude Opus 5.5 3D、Astra 3D。プロンプトのみ、参照画像なし)、リトポロジー(Tripo Retopology v3、Hunyuan Polygen)、ポリゴン数指定リメッシュ(Meshy Remesh)、画像からのリファイン(UltraShape)。
  • リギングとアニメーション: キャラクターのリギング(Uthana、Meshy、Cartwheel、Tripo)、クリーチャーのリギング(Tripo Rigging 2.5、rigType)、ライブラリモーション(Meshy Animation: actionId、例: 30 Casual Walk、106 Confident Walk、4 Attack、22 FunnyDancing 01。motions_find は名前またはカテゴリで656個すべてのモーションを検索します)、プロンプトからのモーション(Cartwheel、Uthana)、または動画からのモーション(Cartwheel、Uthana)。
  • パーツとスタイル: パーツに分割(Tripo Segmentation v2、Hunyuan 3D Part、Hitem3D Split、Rodin Bang)、スタイライズ(Tripo Stylization: LEGO、voxel、Voronoi。Hitem3D Multicolor)。
  • スキーマではオプションとされているが、Scenarioが必要とする入力: Cartwheelモーションには characterModel(3Dモデル)または characterFile(画像、はるかに高価)が必要。YVO3Dには retexture がfalseでない限り referenceImage が必要。ツールは価格照会前にその旨を通知します。
  • FBXのみを読み取るモデル(Tencent Texture Edit)であっても、GLBアセットIDを渡してください。プラグインはScenarioのFBXコピーを無料で送信します。
  • 動画: アップスケール、サウンド追加、スタイル変更。オーディオ: 声質変換、音声分離。

models_find に capability(img23d、img2video、3d23d、video23d、video2audio、audio2audio)を指定すると、代替モデルを見つけられます。

ワークフロー

workflows_find(scope: team または featured)は、ID、説明、入力を返します。workflow_run は名前で inputs を受け取り、generate と同じ料金ルールが適用されます。出力はその種類に応じてインポートされます。

シーンツール

ユーザーが「エージェントがシーンを編集できる」をオフにすると無効になります。読み取りツール(scene_info、object_get、assets_find、console_logs、capture_view)は引き続き動作します。

  • object_create(空、プリミティブ、またはプレハブ)、object_set(名前、アクティブ、親、トランスフォーム、タグ、レイヤー、メートル単位の height、地面に設置する ground)、object_delete。
  • component_add、component_set: シリアライズされたパス(m_Intensity)またはパブリックプロパティ(intensity)。ベクトルは [x,y,z]、色は [r,g,b,a] または #RRGGBB、参照はアセットパスまたは階層パスで指定します。object_get に properties: true を指定すると、設定可能な項目が一覧表示されます。
  • material_assign、skybox_set、select、scene_save(無題のシーンにはパスが必要)。
  • assets_find に label: "Scenario" を指定すると、プロジェクト内のすべての生成済みアセットが一覧表示されます。

各編集は1つのアンドゥステップとなるため、ユーザーはあなたが行ったすべての操作を元に戻せます。

歩行可能なワールド

1つのプロンプトから、プレイヤーが歩き回れるワールドを作成します:

  1. terrain_create: コライダー付きの地面。最初に生成したハイトマップ画像(トップダウンのグレースケールハイトマップ、白が高い)で形状を設定し、建物が配置される flat_areas のレベルを設定し、生成したマテリアルで layers をペイントします(最初のレイヤーがベース、それ以外は min_height または min_slope で指定)。edge_falloff で島または台地を作成します。
  2. セットピースを生成し、object_set で height(メートル)と ground: true を指定して各ピースのサイズを設定し、地形に配置します。標準的な高さ: 人物1.8、ドア2.2、家6~9、松の木8~14、岩0.5~2。
  3. scatter は、height 範囲、パスや建物の周囲の keep_clear ゾーン、コライダーを指定して、モデルを地面(on: 地形)に繰り返し配置します。
  4. キャラクター: 生成、リギング、アイドル、歩行、走行、ジャンプのアニメーション(ライブラリIDは motions_find で検索)を設定し、make_playable でそれらの結果を使用します。コントローラーを構築し、キャラクターのサイズを設定し、クリップに合わせて速度を調整し、追跡カメラをセットアップします。
  5. play で action: "walk" とウェイポイントを指定して(run、jump、wait)プレイテストします。到達したポイント、落下(4m以上の落差をカウント)、ジャンプを報告します。呼び出し時間を超える歩行はUnity内で継続され、応答は running を返します。action: "status" と wait_seconds を指定した play は、終了時に結果を返します。再度編集する前に action: "stop" を指定した play で停止してください。Playモード中の編集は失われます。record: true(または action: "record")は、固定フレームレートでメインカメラのPNGフレームを書き込みます。
  6. scene_save。

作業の確認

  • capture_view はシーンビューまたはカメラをレンダリングし、画像を返します。結果を配置した後やシーンを編集した後に確認してください。upload: true を指定すると、ScenarioアセットIDも返されるため、キャプチャを次の生成の参照として使用できます。
  • console_logs に level: "error" を指定すると、インポート後やコンポーネント変更後のエラーを確認できます。

良い習慣

  • 意図ごとに1つのリクエスト。バッチや、ユーザーが指定した予算を超える可能性がある場合は、事前に確認してください。
  • 以前の結果の asset_ids を再利用し、同じファイルを再度アップロードしないでください。
  • jobs はこのUnityプロジェクトからの最近のリクエストを一覧表示します。エラー後に再送信する前に確認してください。
  • 作成したものとそのUnityパス、配置したオブジェクトを報告してください。

関連スキル