mcpField
U
unity-asset

unity-asset

github.com/besty0728開発1.9k86 回インストール今日更新
リポジトリ

unity-asset について

unity-asset は、Unity プロジェクトのアセットを管理するスキル群です。アセット整理やファイルのインポート、AssetDatabase 情報の検索に対応し、複数アセットの一括操作も行えます。

主な機能

  1. 01名前、種類、ラベルでアセットを検索
  2. 02アセット情報とラベルを取得
  3. 03アセットのインポート、移動、複製、削除
  4. 04フォルダー作成と AssetDatabase の更新
  5. 05インポート、移動、削除、再インポートの一括処理

活用シーン

  1. 01種類やラベルでプロジェクト内のファイルを検索
  2. 02アセットのフォルダーを整理してファイルを一括移動
  3. 03外部ファイルを Unity プロジェクトにインポート
  4. 04外部ファイル変更後にアセットを更新または再インポート

MCP 対応

README には MCP との関係について記載がありません。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/besty0728/unity-skills --skill unity-asset

インストール後、Claude Code で/unity-assetを入力して読み込まれたか確認します。

詳細

このモジュールのスキルを呼び出す前に: 名前や説明から推測したパラメーターでスキルを呼び出そうとしている場合は、いったん停止し、まずこのファイルを読むか、GET /skills/recommend?includeSchema=true でスキーマを取得してください。recommend/schema からすでにパラメーター定義を取得している場合は、そのまま dryRun に進めます。

トリガー

  • プロジェクトアセットの整理
  • ファイルのインポートまたは移動
  • アセットメタデータの照会
  • AssetDatabase 操作のスクリプト化
  • プロジェクトアセットの整理、ファイルのインポートまたは移動、アセットメタデータの照会、AssetDatabase 操作のスクリプト化

Unity アセットスキル

バッチ優先:2 つ以上のアセットを操作する場合は、*_batch スキルを使用してください。

動作モード

  • Approval:このモジュールは Mixed です。asset_find/asset_get_info/asset_get_labels は SkillMode.SemiAuto に設定されており、直接実行できます。書き込み系スキル(asset_move/asset_move_batch/asset_duplicate/asset_create_folder/asset_create_folder_batch/asset_refresh/asset_reimport*/asset_set_labels)はデフォルトの SkillMode.FullAuto で実行され、grant が必要です。
  • Auto / Bypass:FullAuto は直接実行されます。
  • NeverInSemi を含む高リスクスキル:asset_import/asset_import_batch(RiskLevel = "high" に設定 — プロジェクトに書き込みます)、asset_delete/asset_delete_batch(Operation.Delete)。これらは Approval/Auto では MODE_FORBIDDEN を返し、Bypass または Allowlist への該当時のみ呼び出せます。

禁止事項(よくある誤った推測):

  • asset_create は存在しません → asset_create_folder(フォルダー)、material_create(マテリアル)、script_create(スクリプト)を使用してください
  • asset_rename は存在しません → 新しいパスを指定して asset_move を使用してください
  • asset_search は存在しません → searchFilter 構文(例:t:Texture2D player)を使って asset_find を使用してください
  • asset_copy は存在しません → asset_duplicate を使用してください

ルーティング:

  • テクスチャ/モデル/オーディオのインポート設定には importer モジュールを使用してください(SkillMode.FullAuto)
  • マテリアルの作成には material モジュールを使用してください(SkillMode.FullAuto)
  • スクリプトの作成には script モジュールを使用してください

スキルの概要

単一オブジェクトバッチ版バッチ版を使用する場合
asset_importasset_import_batch2 つ以上のファイルをインポートする場合
asset_deleteasset_delete_batch2 つ以上のアセットを削除する場合
asset_moveasset_move_batch2 つ以上のアセットを移動する場合
asset_create_folderasset_create_folder_batch2 つ以上のフォルダーを作成する場合

バッチ版は不要:

  • asset_duplicate - 単一のアセットを複製します
  • asset_find - アセットを検索します(リストを返します)
  • asset_refresh - AssetDatabase を更新します
  • asset_get_info - アセット情報を取得します
  • asset_reimport - アセットを強制的に再インポートします
  • asset_reimport_batch - 複数のアセットを再インポートします

スキル

asset_import

外部ファイルをプロジェクトにインポートします。

パラメーター型必須説明
sourcePathstringはい外部ファイルのパス
destinationPathstringはいプロジェクト内の保存先
asset_import_batch

複数の外部ファイルをインポートします。

パラメーター型必須デフォルト説明
itemsjson stringはい-アイテムごとのオブジェクトを含む JSON 配列(下記の例を参照)

現在、items にはネイティブ配列ではなく、JSON 文字列を指定する必要があります。

戻り値:{success, totalItems, successCount, failCount, results: [{target, success, serverAvailability?}]}:target はアイテムの destinationPath です。serverAvailability は、スクリプトドメインのアセットが書き込まれた場合、または Unity がコンパイル中の場合にのみ表示されます。

import json

unity_skills.call_skill("asset_import_batch", items=json.dumps([
    {"sourcePath": "C:/Downloads/tex1.png", "destinationPath": "Assets/Textures/tex1.png"},
    {"sourcePath": "C:/Downloads/tex2.png", "destinationPath": "Assets/Textures/tex2.png"}
]))
asset_delete

プロジェクトからアセットを削除します。

パラメーター型必須説明
assetPathstringはい削除するアセットのパス
asset_delete_batch

複数のアセットを削除します。

ParameterTypeRequiredDefaultDescription
itemsjson stringYes-項目ごとのオブジェクトを含む JSON 配列(以下の例を参照)

現在、items にはネイティブ配列ではなく、JSON 文字列を指定する必要があります。

戻り値:{success, totalItems, successCount, failCount, results: [{target, success, serverAvailability?}]}:target は削除された path です。serverAvailability は、スクリプトドメインのアセットが削除された場合、または Unity がコンパイル中の場合にのみ表示されます。

import json

unity_skills.call_skill("asset_delete_batch", items=json.dumps([
    {"path": "Assets/Textures/old1.png"},
    {"path": "Assets/Textures/old2.png"}
]))
asset_move

アセットを移動または名前変更します。

ParameterTypeRequiredDescription
sourcePathstringYes現在のアセットパス
destinationPathstringYes新しいパス/名前
asset_move_batch

複数のアセットを移動します。

ParameterTypeRequiredDefaultDescription
itemsjson stringYes-項目ごとのオブジェクトを含む JSON 配列(以下の例を参照)

現在、items にはネイティブ配列ではなく、JSON 文字列を指定する必要があります。

戻り値:{success, totalItems, successCount, failCount, results: [{target, success, from, to, serverAvailability?}]}:target は項目の sourcePath です。serverAvailability は、スクリプトドメインのアセットが移動された場合、または Unity がコンパイル中の場合にのみ表示されます。

import json

unity_skills.call_skill("asset_move_batch", items=json.dumps([
    {"sourcePath": "Assets/Old/mat1.mat", "destinationPath": "Assets/New/mat1.mat"},
    {"sourcePath": "Assets/Old/mat2.mat", "destinationPath": "Assets/New/mat2.mat"}
]))
asset_duplicate

アセットを複製します。

ParameterTypeRequiredDescription
assetPathstringYes複製するアセット
asset_find

検索フィルターでアセットを検索します。

ParameterTypeRequiredDefaultDescription
searchFilterstringYes-検索クエリ
limitintNo50返す結果の最大数

検索フィルターの構文:

FilterExampleDescription
t:Typet:Texture2D種類で検索
l:Labell:Architectureラベルで検索
nameplayer名前で検索
Combinedt:Material player複数のフィルター

戻り値:{count, totalFound, assets: [{path, name, type}]}

asset_create_folder

プロジェクト内にフォルダーを作成します。

ParameterTypeRequiredDescription
folderPathstringYesフォルダーのフルパス
asset_create_folder_batch

複数のフォルダーを作成します。

ParameterTypeRequiredDefaultDescription
itemsjson stringYes-項目ごとのオブジェクトを含む JSON 配列(以下の例を参照)

現在、items にはネイティブ配列ではなく、JSON 文字列を指定する必要があります。各項目の親フォルダーはあらかじめ存在している必要があるため、1 回の呼び出しで入れ子のフォルダーを作成する場合は、外側のフォルダーから順に指定してください。

戻り値:{success, totalItems, successCount, failCount, results: [{target, success, path, guid}]}

import json

unity_skills.call_skill("asset_create_folder_batch", items=json.dumps([
    {"folderPath": "Assets/Art"},
    {"folderPath": "Assets/Art/Textures"}
]))
asset_refresh

外部変更(独自のファイルツールで書き込んだファイルや削除したファイルなど)後に、AssetDatabase を更新します。

パラメーターはありません。

戻り値:{success, message, compileTriggered}。更新によってスクリプトのコンパイルが開始された場合(.cs、.asmdef、.asmref、.rsp、または .dll が変更された場合)、compileTriggered は true となり、結果に status:"accepted"、jobId、waitUrl(/jobs/<jobId>?wait=90)、serverAvailability、および Unity からファイルが報告された場合は scriptChanges(パスを最大 20 件、残りは scriptChangesTruncated に件数を記録)が追加されます。compileTriggered:false の場合は、待機する必要はありません。

自分で .cs を書き込みましたか?asset_refresh を呼び出してから、waitUrl に GET リクエストを送信し、ドメインの再読み込み中も同じ URL を再試行してください:curl -s --retry 20 --retry-connrefused --retry-all-errors --retry-delay 2 "http://localhost:<port>/jobs/<jobId>?wait=90"。compilation.compiled:true、success:true、domainLoaded:true を伴う status:"completed" は、新しい型を使用できる状態であることを示します。"failed" には、resultData.compilation.errors にコンパイルエラーが列挙されます。診断情報はプロジェクト全体を対象とします(compilation.scope:"project")。compilation.compiled:false は、更新後にコンパイルが行われなかったことを意味します。

asset_get_info

アセットの情報を取得します。

パラメーター型必須説明
assetPath文字列はいアセットのパス
asset_reimport

アセットを強制的に再インポートします。

パラメーター型必須説明
assetPath文字列はい再インポートするアセットのパス
asset_reimport_batch

パターンに一致する複数のアセットを再インポートします。

パラメーター型必須説明
searchFilter文字列いいえAssetDatabase の検索フィルター(デフォルトは *)
folder文字列いいえ検索するフォルダーのルート(デフォルトは Assets)
limit整数いいえ再インポートするアセットの最大数(デフォルトは 100)
asset_set_labels

アセットにラベルを設定します(既存のラベルは上書きされます)。

パラメーター型必須説明
assetPath文字列はいアセットのパス
labels文字列はいカンマ区切りのラベル(例:"ui,icon,hud")。空の項目は削除されます

戻り値:{success, assetPath, labels: [...]}

asset_get_labels

アセットに現在設定されているラベルを取得します。

パラメーター型必須説明
assetPath文字列はいアセットのパス

戻り値:{success, assetPath, labels: [...]}


最小限の例

import unity_skills

# GOOD: 1 API call instead of 4
unity_skills.call_skill("asset_move_batch", items=[
    {"sourcePath": "Assets/tex1.png", "destinationPath": "Assets/Textures/tex1.png"},
    {"sourcePath": "Assets/tex2.png", "destinationPath": "Assets/Textures/tex2.png"},
    {"sourcePath": "Assets/tex3.png", "destinationPath": "Assets/Textures/tex3.png"},
    {"sourcePath": "Assets/tex4.png", "destinationPath": "Assets/Textures/tex4.png"}
])

ベストプラクティス

  1. アセットを用途に応じたフォルダーに整理する
  2. 一貫した命名規則を使用する
  3. 外部ファイルの変更後に更新する
  4. 効率化のために検索フィルターを使用する
  5. 一括削除操作の前にバックアップを取る

正確なシグネチャ

正確な名前、パラメーター、デフォルト値、戻り値は、このファイルではなく、GET /skills/schema または unity_skills.get_skill_schema() で定義されています。

よくあるエラー

トランスポートレベルのすべてのコード(COMPILING/RATE_LIMIT など)→ ../../references/protocol-error-codes.md

エラー発生条件対処方法
TARGET_NOT_FOUNDソースファイル、アセットのパス、または対象のアセットが見つかりませんでした。asset_find / asset_get_info でパスを確認し、ファイルが存在することを確かめてから、プロジェクトからの相対パスを正確に指定して再試行してください。
MISSING_PARAM必須のパスパラメーターが空か、指定されていません(パスの検証で検出されます)。必須の assetPath、sourcePath、destinationPath、または folderPath を指定してください。
SEMANTIC_INVALIDパスが無効です(例:.. を含む、Assets/ / Packages/ で始まらない、またはフォルダーがすでに存在する)。Assets/ または Packages/ 配下の正規化されたプロジェクト相対パスを使用してください。フォルダーがすでに存在する場合は、別の名前を選んでください。
SKILL_ERRORFailed to delete asset、AssetDatabase.MoveAsset がエラーを返した、フォルダーの作成に失敗したなど、低レベルの AssetDatabase またはファイルシステム操作が失敗しました。メッセージに記載された問題(例:ロックされたファイルを閉じる、親パスを修正する)を解決してから再試行してください。

コメント