タイトル: ゲームの実行/一時停止/コマ送り
SEOタイトル: Unity ゲーム実行/一時停止/コマ送り|Play / Pause / Step とショートカット
| この記事の要点 |
|
Play / Pause / Step ボタン
Unity Editor のツールバー中央には 3 つのボタンが並んでいます:
| ボタン | 機能 | Windows ショートカット | Mac ショートカット |
|---|---|---|---|
| ▶ Play | ゲームを実行(Game ビューに切替) | Ctrl + P | Cmd + P |
| ⏸ Pause | 実行中に一時停止 / 再開 | Ctrl + Shift + P | Cmd + Shift + P |
| ⏭ Step | 1 フレームだけ進める | Ctrl + Alt + P | Cmd + Option + P |
Play モードの特徴
- Editor のタブカラーが青色(デフォルト)に変化して、Play 中であることを示す
- Hierarchy / Inspector で値を編集できる — リアルタイム挙動確認に最適
- Play 中の変更は停止すると元に戻る — 設定値を永続化したいなら停止後に再度同じ値を入れる
- Play 中に Scene を切り替えても OK(SceneManager.LoadScene で遷移確認)
Pause モードの活用
一時停止中はゲームロジックや物理演算が止まる一方で、Editor 操作は可能。デバッグに非常に便利:
- Inspector で変数の値を確認(実行時の状態を可視化)
- Scene ビューでオブジェクトの位置・向きを確認
- Hierarchy で動的生成されたオブジェクトを確認
- Console でDebug.Log の出力を確認
Step モード(コマ送り)の使い所
1 フレームずつ進めるので、以下のシーンで重宝します:
- 当たり判定の検証: 衝突した瞬間のフレームを観察
- 物理挙動の確認: Rigidbody が想定通り動いているか
- アニメーションの特定フレームでの状態確認
- 1 フレームだけの不具合(チラつき・テクスチャ表示遅延など)の再現
「Play On Awake」の挙動
Audio Source / Animator など一部コンポーネントには「Play On Awake」プロパティがあり、シーン読み込み直後に自動再生されます。Play ボタンを押した瞬間に音が鳴ったりアニメーションが動いたりするのはこの設定です。
Play モード時の自動切替
Edit → Preferences → General で以下が設定可能:
- Auto Save Scenes Before Building: Play 前に自動保存
- Enter Play Mode Options: Reload Domain / Reload Scene のスキップ(高速 Play へ)
- Play Mode Tint: Play 中の Editor 色を変更(青以外も可)
Enter Play Mode Options(高速 Play)
大規模プロジェクトでは Play ボタンを押してから実行開始まで数秒かかります。これを大幅短縮:
- Edit → Project Settings → Editor
- Enter Play Mode Options にチェック
- Reload Domain: スクリプトの再ロードをスキップ(static 変数がリセットされなくなる点に注意)
- Reload Scene: シーンの再ロードをスキップ
static フィールドを使っているコードは Reload Domain OFF だと前回値が残るので、コードを RuntimeInitializeOnLoadMethod で初期化する必要があります。
スクリプトから Pause を制御
using UnityEditor;
using UnityEngine;
public class PauseHelper : MonoBehaviour {
void Update() {
if (Input.GetKeyDown(KeyCode.P)) {
// Editor 上でのみ動作(ビルド版では EditorApplication 使えない)
#if UNITY_EDITOR
EditorApplication.isPaused = !EditorApplication.isPaused;
#endif
}
}
}
// ゲーム時間の停止(リリース版でも使える)
// Time.timeScale = 0f; → 全ての Update / FixedUpdate が停止扱い
// Time.timeScale = 1f; → 通常速度に戻す
Time.timeScale との違い
| Editor の Pause | Time.timeScale = 0 | |
|---|---|---|
| 対象 | Editor のみ | Editor / ビルド版両方 |
| 停止範囲 | すべて(Update / 物理 / アニメ) | Time.deltaTime を使う処理(Update / 物理) |
| UI / 入力 | 停止 | 動く(unscaledDeltaTime を使う UI / 入力は動く) |
| 用途 | 開発中のデバッグ | ゲーム内ポーズメニュー実装 |
関連
- Game ビューの解像度切替: Game タブ左上のドロップダウンで Free Aspect / 16:9 / 9:16 など
- Maximize On Play: Game タブ右上のボタンで Play 時に Game ビューを最大化
- Stats: Game ビュー右上の「Stats」ボタンで FPS / Draw Call / Triangle 数を表示