uloop-control-play-mode について
uloop-control-play-modeは、Unity EditorのPlay Modeを操作し、状態を確認するコマンドラインスキルです。再生、停止、一時停止、再開、1フレーム進行に対応し、状態変化や警告も返します。
主な機能
- 01Play Modeの開始と停止
- 02現在のセッションの一時停止と再開
- 03一時停止中に1フレーム進行
- 04副作用なしの状態確認
- 05状態変化と警告の報告
活用シーン
- 01Unityセッションの実行や停止
- 02Play Modeの一時停止状態の確認
- 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
| パラメーター | 型 | デフォルト | 説明 |
|---|---|---|---|
--action | string | Play | Play - プレイモードを開始、Stop - プレイモードを停止、Pause - プレイモードを一時停止、Step - 一時停止中に 1 フレーム進める、Status - 何も変更せずに現在の状態を報告、Resume - 停止中にプレイモードを開始する場合も含め、すべての状態で Play と同じ動作をするエイリアス |
--timeout-seconds | integer | 180 | 要求したプレイモードの状態になるまで待機する最大秒数 |
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を再適用してください。
コメント
Markdown 対応