mcpField
U
uloop-screenshot

uloop-screenshot

github.com/hatayama開発58645 回インストール1 日前に更新
リポジトリ

uloop-screenshot について

uloop-screenshot は、Unity Editor のウィンドウやゲーム描画を名前で指定して PNG に保存するスキルです。操作可能な UI 要素や物理コライダー候補の注釈にも対応します。

主な機能

  1. 01名前を指定した Editor ウィンドウの撮影
  2. 02Play Mode のゲーム描画の撮影
  3. 03スクリーンショット解像度の調整
  4. 04操作可能な UI 要素の注釈
  5. 05物理コライダー候補の注釈
  6. 06画像なしで要素メタデータを返却

活用シーン

  1. 01Unity ウィンドウを PNG として保存
  2. 02実行中ゲームの UI 要素を確認
  3. 03物理コライダー候補を特定
  4. 04画像を撮らずに注釈付き要素データを取得

インストール

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

$npx skills add https://github.com/hatayama/unity-cli-loop --skill uloop-screenshot

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

同梱ファイルreferences/annotated-elements.md

詳細

uloop スクリーンショット

名前を指定して任意の Unity EditorWindow のスクリーンショットを撮影し、PNG として保存します。

使用方法

uloop screenshot [--window-name <name>] [--resolution-scale <scale>] [--match-mode <mode>] [--capture-mode <mode>] [--annotate-elements] [--annotate-raycast-grid] [--raycast-layer-mask <layers>] [--elements-only] [--output-directory <path>]

パラメーター

パラメーター型デフォルト説明
--window-name文字列Gameキャプチャするウィンドウ名です(例:Game、Scene、Console、Inspector)。解決されたキャプチャモードがレンダリングの場合は無視されます(Play Mode 中は auto がレンダリングに解決されます)。Game タブが Device Simulator で、タイトルが Simulator の場合、デフォルトの Game は Simulator にフォールバックします。
--resolution-scale数値1.0解像度のスケール(0.1~1.0)
--match-mode列挙型exactウィンドウ名の照合モード:exact、prefix、contains のいずれかです。解決されたキャプチャモードがレンダリングの場合は無視されます(Play Mode 中は auto がレンダリングに解決されます)。
--capture-mode列挙型autoauto - PlayMode 中はレンダリング、それ以外はウィンドウ、window - ツールバーを含む EditorWindow をキャプチャ、rendering - ゲームのレンダリングのみをキャプチャ(PlayMode が必要)、GameView - rendering の別名です。レンダリングのスクリーンショットは ScreenshotToInputFormula を返します。これは、simulate-mouse-input(--dry-run を含む)または simulate-mouse-ui を呼び出す前に、未加工の画像ピクセルを変換するためのものです。
--output-directory文字列""スクリーンショットの保存先ディレクトリのパスです。空の場合はデフォルトのパス(.uloop/outputs/Screenshots/)を使用します。絶対パスも指定できます。
--annotate-elementsフラグ-操作可能な UI 要素にインデックスラベルと操作ヒント(A / CLICK、B / DRAG、...)を付けます。応答には SortingOrder、次に SiblingIndex で並べ替えられた要素メタデータを含む AnnotatedElements 配列が含まれます(Z オーダーの近似値であり、描画順序を保証するものではありません)。解決されたキャプチャモードがレンダリングの場合(Play Mode 中は auto がレンダリングに解決されます)にのみ、PlayMode で動作します。
--annotate-raycast-gridフラグ-クラスタリングされた 3D 物理コライダー候補を、AnnotatedElements 内の PhysicsCollider エントリーとして注釈付けします。Camera.main の可視性と、simulate-mouse-input と同じ左上基準の Game View 座標を使用します。解決されたキャプチャモードがレンダリングの場合(Play Mode 中は auto がレンダリングに解決されます)にのみ、PlayMode で動作します。
--raycast-layer-mask文字列""--annotate-raycast-grid がクラスタリングするレイヤーを絞り込むための、カンマ区切りの物理レイヤー名です。ヒット対象は Camera.main.cullingMask からも見えるレイヤーに限定されます。省略した場合は、Physics.DefaultRaycastLayers に対してクラスタリングします。
--elements-onlyフラグ-スクリーンショット画像をキャプチャせず、注釈付き要素の JSON のみを返します。--annotate-elements または --annotate-raycast-grid の指定が必要で、解決されたキャプチャモードがレンダリングの場合(Play Mode 中は auto がレンダリングに解決されます)にのみ、PlayMode で動作します。

照合モード

モード説明例
exactウィンドウ名が完全に一致する必要があります(大文字と小文字は区別しません)「Project」は「Project」のみと一致します
prefixウィンドウ名が入力文字列で始まる必要があります「Project」は「Project」と「Project Settings」に一致します
containsウィンドウ名に入力文字列が含まれている必要があります「set」は「Project Settings」に一致します

ウィンドウ名

ウィンドウ名は、ウィンドウのタイトルバー(タブ)に表示されるテキストです。一般的な名前:Game、Simulator、Scene、Console、Inspector、Project、Hierarchy、Animation、Animator、Profiler。カスタム EditorWindow のタイトルにも対応しています。

デバイスシミュレーター

  • annotate → click のフローでは、--capture-mode rendering を優先してください。通常の Game ビューと Device Simulator の両方で動作し、座標は --dry-run を含め、simulate-mouse-ui/simulate-mouse-input と一致します。
  • --capture-mode window では、Editor のツールバーや枠線などもキャプチャされます。Device Simulator がプレイビューの場合、Game タブがないとデフォルトの --window-name Game は Simulator にフォールバックします。また、--window-name Simulator を指定することもできます。
  • Simulator の Fit to Screen/Scale/Safe Area オーバーレイはウィンドウ装飾のみであり、レンダリングモードの入力座標には影響しません。デバイスを回転した後は、クリックする前に annotate を再実行してください。回転すると Game View のサイズが変わるため、それ以前の AnnotatedElements エントリ(bounds、SimX/SimY、probe と occlusion の結果)はすべて古くなります。

出力

以下を含む JSON を返します。

  • ScreenshotCount:キャプチャしたウィンドウの数
  • ResolvedCaptureMode:"window" または "rendering" — auto の解決後に実際に使用されたモード
  • Warning:Play Mode の実行中に少なくとも 1 枚の画像を含むウィンドウキャプチャを行った場合、および Play Mode の一時停止中に画像をキャプチャした場合に表示されます(一時停止前にレンダリングされたフレームが UGUI/canvas の内容に表示されることがあります。更新するには、uloop control-play-mode --action Step を 1 回実行してから、再度キャプチャしてください)。
  • Screenshots:各項目に以下を含むスクリーンショット情報の配列
    • ImagePath:保存された PNG ファイルの絶対パス。--elements-only を使用した場合は画像ファイルが書き込まれないため、空("")になります。この場合、FileSizeBytes、Width、Height は 0 ですが、GameViewWidth/GameViewHeight と AnnotatedElements には引き続き実際の値が設定されます。空でない場合は、必ずここに記載されたファイルを開いてください。出力ディレクトリには過去のキャプチャがすべて蓄積されるため、ディレクトリ一覧(ls -t など)から最新のファイルを推測すると、以前の実行で作成された古いスクリーンショットを誤って選んでしまうことがあります。
    • FileSizeBytes:保存されたファイルのサイズ(バイト単位)
    • Width:キャプチャ画像の幅(ピクセル単位)
    • Height:キャプチャ画像の高さ(ピクセル単位)
    • ImageCoordinateSystem:"top-left-game-view" または "top-left-window"
    • ResolutionScale:キャプチャに使用された解像度スケール
    • ImageToInputOffsetY:top-left-game-view 座標を変換する際に使用される Y オフセット
    • GameViewWidth、GameViewHeight:キャプチャ時点の入力座標での Game View サイズ — SimX/SimY の基準であり、simulate-mouse-input 内の Y 軸反転にも使用されます。--elements-only を含め、レンダリングキャプチャで値が設定されます
    • ScreenshotToInputFormula:画像の生ピクセルを simulate-mouse 入力座標に変換する式
    • AnnotatedElements:注釈付き UI 要素のメタデータ配列。--annotate-elements または --annotate-raycast-grid を使用しない限り空です。
    • RaycastLayerSummaries/RaycastLayerNamesChecked:--annotate-raycast-grid を使用した場合に設定される Physics レイヤーの診断情報

AnnotatedElements/RaycastLayerSummaries のフィールドと gameView 座標の変換については、スクリーンショットの座標をマウスシミュレーションツールで使う前に references/annotated-elements.md をお読みください。

複数のウィンドウが一致する場合(Inspector ウィンドウが複数ある場合や、contains モードを使用する場合など)、一致したすべてのウィンドウが番号付きファイル名(例:Inspector_1_*.png、Inspector_2_*.png)でキャプチャされます。

注意事項

  • 必要に応じて、最初に uloop focus-window を使用してください
  • 対象のウィンドウは Unity Editor で開いている必要があります
  • ウィンドウ名の照合では、常に大文字と小文字が区別されません

コメント