mcpField
U
uloop-control-play-mode

uloop-control-play-mode

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

uloop-control-play-mode について

uloop-control-play-modeは、Unity EditorのPlay Modeを操作し、状態を確認するコマンドラインスキルです。再生、停止、一時停止、再開、1フレーム進行に対応し、状態変化や警告も返します。

主な機能

  1. 01Play Modeの開始と停止
  2. 02現在のセッションの一時停止と再開
  3. 03一時停止中に1フレーム進行
  4. 04副作用なしの状態確認
  5. 05状態変化と警告の報告

活用シーン

  1. 01Unityセッションの実行や停止
  2. 02Play Modeの一時停止状態の確認
  3. 03実行中のセッションを1フレームずつ確認

インストール

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

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

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

詳細

uloop control-play-mode

Unity Editor のプレイモードを制御(再生/停止/一時停止/ステップ)するか、副作用なしで状態を照会します(status)。

Usage

uloop control-play-mode [options]

Parameters

パラメーター型デフォルト説明
--actionstringPlayPlay - プレイモードを開始、Stop - プレイモードを停止、Pause - プレイモードを一時停止、Step - 一時停止中に 1 フレーム進める、Status - 何も変更せずに現在の状態を報告、Resume - 停止中にプレイモードを開始する場合も含め、すべての状態で Play と同じ動作をするエイリアス
--timeout-secondsinteger180要求したプレイモードの状態になるまで待機する最大秒数

Output

現在のプレイモードの状態を JSON で返します。

  • IsPlaying: Unity が現在プレイモードかどうか
  • IsPaused: プレイモードが一時停止中かどうか
  • Changed: 要求したアクションによって現在のプレイモードの状態が変化したかどうか
  • WasAlreadyStopped: プレイモードがすでに停止中に Stop が要求されたかどうか
  • ResumedFromPause: 新しいセッションを開始するのではなく、一時停止中のプレイモードセッションを Play で再開したかどうか
  • Message: 実行したアクションの説明
  • Warning (string, optional): アクションに注意事項がある場合に設定されます。新しい Play の開始時には、必ずセッションが Edit 時のシーン状態から開始されたことを通知します。さらに、有効なホットリロードパッチまたは有効なポーズポイントがあり、Domain Reload が有効な場合は、Play 開始時の Domain Reload によって破棄される数を報告します。--persist で有効にしたポーズポイントは別途カウントされ、リロード後に再度有効化されます。また、再有効化の結果を確認するには pause-point-status を参照するよう警告します。Unity Editor のフォーカスが外れた状態でプレイモードが実行中の場合も Status が報告します。この場合、進行がスロットルされることがあります。uloop focus-window を実行するか、進行状況をポーリングする代わりに pause-point --await/--trigger フローを使用してください。
  • StoppedBy (string, optional): プレイモードが最後に停止した理由です。cli-control-play-mode、cli-compile-stop-setting、cli-run-tests-cancel、script-compilation、または unknown のいずれかです。プレイモードがすでに停止中の場合の Stop と、プレイモードが実行中でない場合の Status に含まれます。この Editor セッションで停止が確認されていない場合は省略されます。
  • StoppedAt (string, optional): その停止時刻を示す UTC ISO 8601 タイムスタンプです。停止が記録されていない場合は StoppedBy とともに省略されます。

注意事項

  • すでに停止している Editor に対して Stop を実行すると、Changed: false、WasAlreadyStopped: true が設定されます。
  • すでに再生中の Editor に対する Play は何も行いません。Changed: false が設定され、現在のセッション(蓄積された状態、生成されたオブジェクト、進行状況)は再起動されず、そのまま維持されます。検証のために初期状態に戻す必要がある場合は、Play だけでリセットされることを期待せず、明示的に Stop を実行してから Play を実行してください。
  • Play Mode が一時停止中に Play を実行すると、同じセッションが再開されます。Changed: true、ResumedFromPause: true、Message: "Play mode resumed" が設定されます。セッションは再起動されません。
  • Resume は Play のエイリアスで、停止中に Play Mode を開始する場合も含め、すべての状態で同じように動作します。
  • Step は正確に1フレーム進め、PlayMode を一時停止状態にします(Editor の Next Frame ボタンと同じです)。Time.timeScale には依存せず、PlayMode が実行中である必要があります。
  • コマンドは、要求された状態になるまで待ってから戻ります。PlayMode への移行が遅いプロジェクトでは、--timeout-seconds を大きくしてください。
  • PlayMode の動作を検証の根拠として利用する前に、事前に存在するエラーがないか uloop get-logs --log-type Error を確認してください。PlayMode の開始時点ですでに存在するエラーは、テスト対象の操作によって発生したものと誤認される可能性があります。
  • Status は副作用なしで現在の状態を読み取ります。Changed は常に false で、待機もシーンの保存も行わず、コンパイルエラーによって拒否されることもありません。最後のコンパイル結果から読み取った CompileErrors リストを含む BlockedByCompileErrors により、コンパイルエラーが現時点で Play を妨げるかどうかを報告しますが、新たなコンパイルは実行しません。未保存の変更によるブロックは予測しません。BlockedByUnsavedChanges は Play リクエスト中に保存に失敗したことを示すもので、Status は保存を試みません。
  • 未保存の変更をサイレントに保存できない場合、Play は CONTROL_PLAY_MODE_UNSAVED_CHANGES エラーですぐに失敗します。最もよくあるのは、保存先のパスがない Untitled シーンです。エラーメッセージには、妨げとなったシーンまたは Prefab ステージが正確に一覧表示されます。Untitled シーンを明示的なパスに保存するか、変更を破棄してから再試行してください。
  • Edit モードから Play を実行すると、Enter Play Mode Options によって無効化されていない限り、ドメインリロードが発生します。その際、--persist で有効化されたものを除き、アクティブなホットリロードのパッチと有効な一時停止ポイントはすべて破棄され、後から再設定されます。応答の Warning には、破棄される数と、別途、再設定される数が報告されます。ホットリロードのみで適用された編集はコンパイル済みアセンブリに含まれないため、新しいセッションでは最後にコンパイルされたコードが実行されます。編集内容を保持するには Play の前に uloop compile を実行するか、Play Mode の開始後に uloop hot-reload を再適用してください。

コメント