Unity6でエディター編集中のシーン開始を高速化する

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#のスクリプトが使用方法によって想定外の動作となるため、よく分からないけど早くしたい場合は両方ともリロードしないは選択しない方が無難です。