プレイモード
プレイモードは、シーンビュー内で現在のシーンに対してゲームのシミュレーションを実行するため、完全なビルド&ランを行わずにイテレーションできます。再生を押すとスクリプトがライブで更新を開始し、停止を押すとシーンは正確に元の状態に戻ります。
ツールバー
再生コントロールはメインメニューバーの中央にあり、実行中はリアルタイム FPS 表示も表示されます:
| コントロール | 効果 |
|---|---|
| ▶ 再生 | プレイモードに入り現在のシーンを実行 |
| ▶ 最初のシーンを再生 | 開いているシーンに関係なく、プロジェクト設定で構成された最初のシーン(プロジェクト設定 → 最初のシーン)を実行。停止時にエディターシーンが復元されます。 |
| ⏸ 一時停止 | シミュレーションをフリーズ(シーンは画面に表示されたまま) |
| ▶ 再開 | 一時停止されたシミュレーションを続行 |
| ⏭ ステップ | 一時停止中に 1 更新フレームだけ進める |
| ⏹ 停止 | シミュレーションを終了し、編集中のシーンを復元 |
Ctrl+P で再生 ⇄ 停止をトグルします。
再生中、ビューポートには色付きの境界線が表示されます——再生中はオレンジ、一時停止中はブルーです。
実行されるもの
コンポーネントスクリプトは、出荷されたゲームとまったく同じように通常のライフサイクルと update を実行します:再生時に awake → enable → start、毎フレーム update、停止時に disable → destroy。同じ engine.Frame コンテキスト(時間、入力、トランスフォーム、オブジェクト、サービス)が注入されるため、コンポーネントはプレイモードとビルドで同一に動作します。
入力
再生中、キーボードとマウスはゲームに送られます。プロジェクト内のすべての入力アクションアセットは再生開始時に適用されるため、アクションベースのスクリプト(例の FreeflyCamera——マウスの右ボタンを押したまま視線操作、WASD で移動)はすぐに動作します。
状態は決して汚染されない
プレイモードはシーンの独自のコピーで実行されます。シミュレーションが行うこと——オブジェクトの移動、スポーン、フィールドの変更——はすべてそのコピーに対して行われ、編集中のシーンには決して影響しません。停止はプレイ前の状態を正確に復元するため、誤った変更を保存する心配なく、再生、実験、停止を行うことができます。
仕組み(内部)
スクリプトはコンパイルされた .zig ファイルであるため、プレイモードはそれらをエンジンとともに小さなプレイライブラリにコンパイルし、エディターがそれをロードしてプロセス内でステップ実行し、ライブシーンをビューポートにレンダリングします。ライブラリはスクリプトを変更したときだけ再構築されるため、繰り返しの再生は瞬時に行われます。スクリプト編集後の最初の再生では、クイックコンパイルが行われます。
完全な設計とインプロセス vs サブプロセスのトレードオフについては、エンジンリポジトリの docs/plans/play-mode.md デザインノートを参照してください。