Unituでエディター上で作業しているシーンの開始(再生)の高速化の手段として「Enter Play Mode Settings」「Enter Play Mode Options」という設定項目がUnity2019.3頃から追加されています。これをONすると開始が爆速になると話題になりました。この機能ですが、Unity6から設定が変わったようなのでUnity2022.3までとUnity6、両方の設定方法を紹介したいと思います。
基礎知識
Enter Play Mode Settingsには以下の2つ要素のがるためまずはその説明です。
ドメインリロード:
このドメインリロードが有効の時は、C#の初期化を行います。スクリプトのstaticな要素(変数、イベント)や現在存在するオブジェクトの初期化が含まれます。【公式マニュアル】
逆にドメインをリロードしない場合、staticな要素の初期化は明示的に「[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)]」属性を付与したstaticメソッドで実行するような追加の実装が必要になります。
シーンリロード:
シーンリロードが有効の時は、開始時にシーンをリロードします。ゲームオブジェクト、コンポーネントが初期化されます。【公式マニュアル】
推奨設定
推奨設定は「ドメインリロードせずに、シーンリロードだけ行う」です。これで影響を最小限にしつつ速度を改善することができます 【参考URL】
Unity2019.3~Unity2022まで
設定は、Edit > Project Settings > Editor にあります。
Unity2022までは以下の通り「Enpter Play Mode Options」に無効にしたい要素はチェックを外すようになっていました。
一般的に画像の通り、ドメインリロードは実行せず、シーンリロードは行う(でないとシーンが最初から実行されず途中から実行されてしまう)と早くなります。
- Enpter Play Mode Options = ON
- Reload Domain = OFF
- Reload Scene = ON
Unity6~
設定は、Edit > Project Settings > Editor にあります。
Unity6はEnter Play Mode Settingsの設定は画像の通りドロップダウンでいずれかを選択します。
それぞれの意味は以下の通りです。
- Reload Domain and Scene → 両方ともリロードする(初期値=遅い)
- Reload Scene only → シーンだけリロードする(推奨の選択値)
- Reload Domain only → ドメインだけリロードする
- Do no reload Domain or Scene → 両方ともリロードしない
初期値は「Reload Domain and Scene」で両方ともリロードする設定が選択されていると思います。
このままでは遅いため、上述の通りドメインリロードだけ実行しないようにするには「Reload Scene only」を選択しましょう。
余談ですが、Unity6向けのWeb上の記事で一部「Do no reload Domain or Scene」を選んで両方リロードしないとする旨の紹介がありますが、それだとC#のスクリプトが使用方法によって想定外の動作となるため、よく分からないけど早くしたい場合は両方ともリロードしないは選択しない方が無難です。