chore(unity): 固定Unity CLI Loop本地包并移除UnitySkills依赖

This commit is contained in:
Liubing\LB
2026-09-28 18:14:59 +08:00
parent 0eb43b2b40
commit c4ae02def9
952 changed files with 70137 additions and 11 deletions

View File

@@ -0,0 +1,280 @@
[English](TOOL_REFERENCE.md)
# uLoopMCP ツールリファレンス
このドキュメントでは、全uLoopMCPツールの詳細仕様を提供します。
## 共通レスポンス形式
すべてのUnity MCPツールは以下の共通要素を持ちます:
### 共通レスポンスプロパティ
すべてのツールには以下のプロパティが自動的に含まれます:
- `Ver` (string): CLIとの互換性チェック用のuLoopMCPサーバーバージョン
---
## Unity コアツール
### 1. compile
- **説明**: AssetDatabase.Refresh()を実行後、コンパイルを行います。詳細なタイミング情報付きでコンパイル結果を返します。
- **パラメータ**:
- `ForceRecompile` (boolean): 強制再コンパイルを実行するかどうか(デフォルト: false)
- `WaitForDomainReload` (boolean): Domain Reload完了まで待機するかどうか(デフォルト: false)
- **レスポンス**:
- `Success` (boolean | null): コンパイルが成功したかどうか。ForceRecompile=true時はDomain Reload完了まで結果が取得できないためnull
- `ErrorCount` (number | null): エラーの総数。ForceRecompile=true時はnull
- `WarningCount` (number | null): 警告の総数。ForceRecompile=true時はnull
- `Errors` (array | null): コンパイルエラーの配列。ForceRecompile=true時はnull
- `Message` (string): エラーメッセージ
- `File` (string): エラーが発生したファイルパス
- `Line` (number): エラーが発生した行番号
- `Warnings` (array | null): コンパイル警告の配列。ForceRecompile=true時はnull
- `Message` (string): 警告メッセージ
- `File` (string): 警告が発生したファイルパス
- `Line` (number): 警告が発生した行番号
- `Message` (string): 追加情報のためのオプションメッセージ
- `ProjectRoot` (string): Unityプロジェクトのルートパス。WaitForDomainReload=true時のみセットされる
### 2. get-logs
- **説明**: フィルタリングおよび高度な検索機能付きでUnityコンソールからログ情報を取得します
- **パラメータ**:
- `LogType` (enum): フィルタするログタイプ - "Error", "Warning", "Log", "All"(デフォルト: "All")
- `MaxCount` (number): 取得するログの最大数(デフォルト: 100)
- `SearchText` (string): ログメッセージ内で検索するテキスト(空の場合はすべて取得)(デフォルト: "")
- `UseRegex` (boolean): 検索に正規表現を使用するかどうか(デフォルト: false)
- `SearchInStackTrace` (boolean): スタックトレース内も検索対象に含めるかどうか(デフォルト: false)
- `IncludeStackTrace` (boolean): スタックトレースを表示するかどうか(デフォルト: false)
- **レスポンス**:
- `TotalCount` (number): 利用可能なログの総数
- `DisplayedCount` (number): このレスポンスで表示されるログの数
- `LogType` (string): 使用されたログタイプフィルタ
- `MaxCount` (number): 使用された最大数制限
- `SearchText` (string): 使用された検索テキストフィルタ
- `IncludeStackTrace` (boolean): スタックトレースが含まれているかどうか
- `Logs` (array): ログエントリの配列
- `Type` (string): ログタイプ(Error, Warning, Log)
- `Message` (string): ログメッセージ
- `StackTrace` (string): スタックトレース(IncludeStackTraceがtrueの場合)
### 3. run-tests
- **説明**: Unity Test Runnerを実行し、包括的なレポート付きでテスト結果を取得します
- **パラメータ**:
- `FilterType` (enum): テストフィルタのタイプ - "all"(0), "exact"(1), "regex"(2), "assembly"(3)(デフォルト: "all")
- `FilterValue` (string): フィルタ値(FilterTypeがall以外の場合に指定)(デフォルト: "")
- `exact`: 個別テストメソッド名(完全一致)(例:io.github.hatayama.uLoopMCP.ConsoleLogRetrieverTests.GetAllLogs_WithMaskAllOff_StillReturnsAllLogs)
- `regex`: クラス名または名前空間(正規表現パターン)(例:io.github.hatayama.uLoopMCP.ConsoleLogRetrieverTests, io.github.hatayama.uLoopMCP)
- `assembly`: アセンブリ名(例:uLoopMCP.Tests.Editor)
- `TestMode` (enum): テストモード - "EditMode"(0), "PlayMode"(1)(デフォルト: "EditMode")
- **PlayMode注意**: PlayModeテスト実行時は、一時的にdomain reloadが無効化されます
- `SaveBeforeRun` (boolean): 未保存のロード済みScene変更と現在のPrefab Stage変更を保存してからテストを実行(デフォルト: false)
- **レスポンス**:
- `Success` (boolean): テスト実行が成功したかどうか
- `Message` (string): テスト実行メッセージ
- `CompletedAt` (string): テスト実行完了タイムスタンプ(ISO形式)
- `TestCount` (number): 実行されたテストの総数
- `PassedCount` (number): 合格したテストの数
- `FailedCount` (number): 失敗したテストの数
- `SkippedCount` (number): スキップされたテストの数
- `XmlPath` (string): NUnit XML結果ファイルのパス(テスト失敗時に自動保存)。XMLファイルは `{project_root}/.uloop/outputs/TestResults/` フォルダに保存されます
### 4. clear-console
- **説明**: クリーンな開発ワークフローのためにUnityコンソールログをクリアします
- **パラメータ**:
- `AddConfirmationMessage` (boolean): クリア後に確認ログメッセージを追加するかどうか(デフォルト: false)
- **レスポンス**:
- `Success` (boolean): コンソールクリア操作が成功したかどうか
- `ClearedLogCount` (number): コンソールからクリアされたログの数
- `ClearedCounts` (object): タイプ別のクリアされたログの内訳
- `ErrorCount` (number): クリアされたエラーログの数
- `WarningCount` (number): クリアされた警告ログの数
- `LogCount` (number): クリアされた情報ログの数
- `Message` (string): クリア操作結果を説明するメッセージ
- `ErrorMessage` (string): 操作が失敗した場合のエラーメッセージ
### 5. find-game-objects
- **説明**: 高度な検索条件(コンポーネントタイプ、タグ、レイヤーなど)で複数のGameObjectを検索します
- **パラメータ**:
- `NamePattern` (string): 検索するGameObject名のパターン(デフォルト: "")
- `SearchMode` (enum): 検索モード - "Exact", "Path", "Regex", "Contains", "Selected"(デフォルト: "Exact")
- `RequiredComponents` (array): GameObjectが持つ必要のあるコンポーネントタイプ名の配列(デフォルト: [])
- `Tag` (string): タグフィルター(デフォルト: "")
- `Layer` (number): レイヤーフィルター(デフォルト: null)
- `IncludeInactive` (boolean): 非アクティブなGameObjectを含めるかどうか(デフォルト: false)
- `MaxResults` (number): 返す結果の最大数(デフォルト: 20)
- `IncludeInheritedProperties` (boolean): 継承プロパティを含めるかどうか(デフォルト: false)
- **レスポンス**:
- `results` (array): 見つかったGameObjectの配列
- `name` (string): GameObject名
- `path` (string): 完全な階層パス
- `isActive` (boolean): GameObjectがアクティブかどうか
- `tag` (string): GameObjectタグ
- `layer` (number): GameObjectレイヤー
- `components` (array): GameObject上のコンポーネントの配列
- `type` (string): コンポーネントタイプ名
- `fullTypeName` (string): 完全なアセンブリ修飾タイプ名
- `properties` (array): コンポーネントプロパティ(IncludeInheritedPropertiesがtrueの場合)
- `totalFound` (number): 見つかったGameObjectの総数
- `errorMessage` (string): 検索が失敗した場合のエラーメッセージ
- `resultsFilePath` (string): 結果がファイルにエクスポートされた場合のファイルパス
- `message` (string): 操作メッセージ
- `processingErrors` (array): シリアライズに失敗したオブジェクトの配列
- `gameObjectName` (string): 失敗したGameObjectの名前
- `gameObjectPath` (string): 失敗したGameObjectのパス
- `error` (string): エラーの説明
---
## Unity 検索・発見ツール
### 6. get-hierarchy
- **説明**: Unity階層構造をネストされたJSON形式で取得します
- **パラメータ**:
- `IncludeInactive` (boolean): 階層結果に非アクティブなGameObjectを含めるかどうか(デフォルト: true)
- `MaxDepth` (number): 階層を探索する最大深度(無制限深度の場合は-1)(デフォルト: -1)
- `RootPath` (string): 階層探索を開始するルートGameObjectパス(すべてのルートオブジェクトの場合は空/null)(デフォルト: null)
- `IncludeComponents` (boolean): 階層内の各GameObjectのコンポーネント情報を含めるかどうか(デフォルト: true)
- `IncludePaths` (boolean): ノードのパス情報を含めるかどうか(デフォルト: false)
- `UseComponentsLut` (string): コンポーネント用LUTの使用 - "auto", "true", "false"(デフォルト: "auto")
- `UseSelection` (boolean): 現在選択中のGameObjectをルートとして使用するかどうか。trueの場合、RootPathは無視されます(デフォルト: false)
- **レスポンス**:
- `message` (string): クライアントがJSONファイルを参照するための案内メッセージ
- `hierarchyFilePath` (string): 階層データが保存されたファイルパス(例: "{project_root}/.uloop/outputs/HierarchyResults/hierarchy_2025-07-10_21-30-15.json")。エクスポートされたJSONファイルには `hierarchy`(GameObjectのネスト配列)と `context`(シーン情報、ノード数、最大深度)が含まれる
### 7. execute-dynamic-code
- **説明**: Unity Editor内で動的C#コードを実行します。セキュリティレベルに応じてAPI利用を制限し、using文の自動処理やエラーメッセージの改善機能を提供します
- **パラメータ**:
- `Code` (string): 実行するC#コード(デフォルト: "")
- `Parameters` (Dictionary<string, object>): 実行時パラメータ(デフォルト: {})
- `CompileOnly` (boolean): コンパイルのみ実行(実行はしない)(デフォルト: false)
- **レスポンス**:
- `Success` (boolean): 実行が成功したかどうか
- `Result` (string): 実行結果
- `Logs` (array): ログメッセージの配列
- `CompilationErrors` (array): コンパイルエラーの配列(存在する場合)
- `Message` (string): エラーメッセージ
- `Line` (number): エラーが発生した行番号
- `Column` (number): エラーが発生した列番号
- `ErrorCode` (string): コンパイラーエラーコード(CS0103など)
- `Hint` (string): エラー解決のためのオプションヒント
- `Suggestions` (array of string): 修正候補(例: usingの追加や完全修飾名の使用)
- `Context` (string): エラー周辺のコード行とキャレットポインタ
- `PointerColumn` (number): キャレット描画用のポインタカラム(1-based)
- `ErrorMessage` (string): エラーメッセージ(失敗時)
- `SecurityLevel` (string): 現在のセキュリティレベル("Disabled", "Restricted", "FullAccess")
- `UpdatedCode` (string): 更新されたコード(修正適用後)
- `DiagnosticsSummary` (string): 診断情報のサマリー(ユニークエラー数、総数、最初のエラー概要)
- `Diagnostics` (array): リッチクライアント向けの構造化された診断情報(CompilationErrorsと同じ構造)
### 8. focus-window
- **説明**: macOSおよびWindowsでUnity Editorウィンドウを前面に表示します
- **パラメータ**: なし
- **レスポンス**:
- `Success` (boolean): 操作が成功したかどうか
- `Message` (string): 操作結果メッセージ
- `ErrorMessage` (string): 操作が失敗した場合のエラーメッセージ
### 9. screenshot
- **説明**: Unity EditorWindowのスクリーンショットを撮影してPNG画像として保存します。名前による柔軟なマッチングモードで任意のEditorWindowをキャプチャ可能です
- **パラメータ**:
- `WindowName` (string): キャプチャするウィンドウ名(例: "Game", "Scene", "Console", "Inspector", "Project", "Hierarchy")(デフォルト: "Game")
- `ResolutionScale` (number): キャプチャ画像の解像度スケール、0.1〜1.0(デフォルト: 1)
- `MatchMode` (enum): ウィンドウ名のマッチングモード(すべて大文字小文字を区別しない) - "exact", "prefix", "contains"(デフォルト: "exact")
- `exact`: ウィンドウ名が完全に一致する必要があります
- `prefix`: ウィンドウ名が入力で始まる必要があります
- `contains`: ウィンドウ名に入力が含まれている必要があります
- `OutputDirectory` (string): スクリーンショット保存先のディレクトリパス。空の場合はデフォルトパス(.uloop/outputs/Screenshots/)を使用。絶対パスも指定可能(デフォルト: "")
- **レスポンス**:
- `ScreenshotCount` (number): キャプチャされたウィンドウの数
- `Screenshots` (array): スクリーンショット情報の配列
- `ImagePath` (string): 保存されたPNGファイルの絶対パス
- `FileSizeBytes` (number): 保存されたファイルのサイズ(バイト)
- `Width` (number): キャプチャ画像の幅(ピクセル)
- `Height` (number): キャプチャ画像の高さ(ピクセル)
### 10. control-play-mode
- **説明**: Unity Editorのプレイモードを制御します(再生/停止/一時停止)
- **パラメータ**:
- `Action` (enum): 実行するアクション - "Play", "Stop", "Pause"(デフォルト: "Play")
- `Play`: プレイモードを開始(一時停止からの再開も含む)
- `Stop`: プレイモードを終了し、エディットモードに戻る
- `Pause`: プレイモードのまま一時停止する
- **レスポンス**:
- `IsPlaying` (boolean): Unityが現在プレイモードかどうか
- `IsPaused` (boolean): プレイモードが一時停止中かどうか
- `Message` (string): 実行されたアクションの説明
### 11. simulate-mouse-ui
- **説明**: PlayMode中のUI要素に対してマウスクリック・長押し・ドラッグをシミュレーション。EventSystemとExecuteEventsを使ってポインタイベントを直接ディスパッチするため、旧・新Input Systemの両方に依存せず動作。Input Systemを読むゲームロジック(`Mouse.current.leftButton.wasPressedThisFrame`等)には `simulate-mouse-input` を使用
- **パラメータ**:
- `Action` (enum): マウスアクション - "Click", "Drag", "DragStart", "DragMove", "DragEnd", "LongPress"(デフォルト: "Click")
- `Click`: (X, Y)でクリック。PointerDown → PointerUp → PointerClick を発火
- `LongPress`: (X, Y)でDuration秒間押し続けてからリリース。PointerClickは発火しない
- `Drag`: (FromX, FromY)から(X, Y)へのワンショットドラッグ
- `DragStart`: (X, Y)でドラッグを開始しホールド
- `DragMove`: 現在位置から(X, Y)へ指定速度でアニメーション移動
- `DragEnd`: (X, Y)へ移動後、ドラッグをリリース
- `X` (number): ターゲットX座標(スクリーンピクセル、原点: 左上)(デフォルト: 0)
- `Y` (number): ターゲットY座標(スクリーンピクセル、原点: 左上)(デフォルト: 0)
- `FromX` (number): Dragアクションの開始X座標(デフォルト: 0)
- `FromY` (number): Dragアクションの開始Y座標(デフォルト: 0)
- `DragSpeed` (number): ドラッグ速度(ピクセル/秒)、0で即時移動(デフォルト: 2000)
- `Duration` (number): LongPressアクションのホールド秒数(デフォルト: 0.5)
- `Button` (enum): マウスボタン - "Left", "Right", "Middle"(デフォルト: "Left")
- **レスポンス**:
- `Success` (boolean): アクションが正常に完了したかどうか
- `Message` (string): 実行されたアクションの説明
- `Action` (string): 実行されたアクション
- `HitGameObjectName` (string): ヒットしたUI要素の名前(ヒットなしの場合null)
- `PositionX` (number): 使用されたX座標
- `PositionY` (number): 使用されたY座標
- `EndPositionX` (number): 終了X座標(Dragアクション用)
- `EndPositionY` (number): 終了Y座標(Dragアクション用)
### 12. simulate-mouse-input
- **説明**: Input System経由でPlayMode中のマウス入力をシミュレーション。ボタンクリック、マウスデルタ、スクロールホイールを `Mouse.current` に直接注入。`wasPressedThisFrame`や`Mouse.current.delta`等を読むゲームロジック向け。Input Systemパッケージ導入時のみ利用可能で、Player SettingsのActive Input Handlingを `Input System Package (New)` または `Both` に設定する必要がある。IPointerClickHandler等のUI要素には `simulate-mouse-ui` を使用
- **パラメータ**:
- `Action` (enum): マウス入力アクション - "Click", "LongPress", "MoveDelta", "SmoothDelta", "Scroll"(デフォルト: "Click")
- `Click`: ボタンのpress+releaseを注入し、`wasPressedThisFrame`がtrueを返すようにする
- `LongPress`: Duration秒間ボタンをホールド
- `MoveDelta`: マウスデルタを注入(ワンショット、FPSカメラ操作等)
- `SmoothDelta`: Duration秒かけて滑らかにマウスデルタを注入(人間的なカメラ旋回)
- `Scroll`: スクロールホイールを注入(ホットバー切替、ズーム等)
- `X` (number): ターゲットX座標(スクリーンピクセル、原点: 左上)。ClickとLongPressで使用(デフォルト: 0)
- `Y` (number): ターゲットY座標(スクリーンピクセル、原点: 左上)。ClickとLongPressで使用(デフォルト: 0)
- `Button` (enum): マウスボタン - "Left", "Right", "Middle"(デフォルト: "Left")。ClickとLongPressで使用
- `Duration` (number): LongPressのホールド秒数、またはClickの最小ホールド時間。0=ワンショットタップ(デフォルト: 0)
- `DeltaX` (number): MoveDeltaアクションのデルタX(ピクセル)。正=右(デフォルト: 0)
- `DeltaY` (number): MoveDeltaアクションのデルタY(ピクセル)。正=上(デフォルト: 0)
- `ScrollX` (number): Scrollアクションの水平スクロールデルタ(デフォルト: 0)
- `ScrollY` (number): Scrollアクションの垂直スクロールデルタ。正=上、通常1ノッチ=120(デフォルト: 0)
- **レスポンス**:
- `Success` (boolean): アクションが正常に完了したかどうか
- `Message` (string): 実行されたアクションの説明
- `Action` (string): 実行されたアクション
- `Button` (string): 使用されたボタン(Click/LongPress用)
- `PositionX` (number, nullable): 使用されたX座標(位置を使わないアクションではnull)
- `PositionY` (number, nullable): 使用されたY座標(位置を使わないアクションではnull)
### 13. simulate-keyboard
- **説明**: Input System経由でPlayMode中のキーボード入力をシミュレーション。単発のキータップ、長押し、複数キーの同時押しに対応。Input Systemパッケージ導入時のみ利用可能で、Player SettingsのActive Input Handlingを `Input System Package (New)` または `Both` に設定する必要がある。ゲームコードがInput System API(例: `Keyboard.current[Key.W].isPressed`)で入力を読み取っている必要があり、レガシーの `Input.GetKey()` には非対応
- **パラメータ**:
- `Action` (enum): キーボードアクション - "Press", "KeyDown", "KeyUp"(デフォルト: "Press")
- `Press`: ワンショットキータップ(KeyDown→KeyUp)。`Duration`で長押し時間を指定可能
- `KeyDown`: KeyUpで明示的に解放するまでキーを押し続ける
- `KeyUp`: KeyDownで押下中のキーを解放
- `Key` (string): Input SystemのKey enumに対応するキー名(例: "W", "Space", "LeftShift", "Enter")。大文字小文字を区別しない
- `Duration` (number): Pressアクションのホールド秒数、0でワンショットタップ(デフォルト: 0)。KeyDown/KeyUpでは無視される
- **レスポンス**:
- `Success` (boolean): アクションが正常に完了したかどうか
- `Message` (string): 実行されたアクションの説明
- `Action` (string): 実行されたアクション
- `KeyName` (string, nullable): 操作対象のキー名
---
## 関連ドキュメント
- [メインREADME](README_ja.md) - プロジェクト概要とセットアップ
- [アーキテクチャドキュメント](ARCHITECTURE_ja.md) - 技術アーキテクチャの詳細
- [変更履歴](CHANGELOG.md) - バージョン履歴と更新