ドメインとシーンのリロードの無効化の詳細
Unityがドメインとシーンのリロード中に実行する作業と、それらが無効な場合にスキップされるものを理解します。
読み終わるまでの所要時間 7 分最終更新 3日前
ドメイン リロードとシーン リロードが無効の場合に Unity がスキップするもの
高レベルの透視では、再生モードの開始は以下の主要ステージで構成されます。
- 現在のシーンをバックアップします。これはシーンが変更されたときにのみ発生します。再生モードを終了したときに、Unity がシーンを再生モード開始前のステートに戻すことができます。
- ドメイン リロード。スクリプト ドメインをリロードして、スクリプト ステートをリセットします。
- シーンリロード。シーンをリロードして、シーンステートをリセットします。
- シーン更新。これは 2 回発生します。1 回はレンダリングなし、もう 1 回はレンダリングありです。
ドメインリロードとシーンリロードを組み合わせたタスクは、スクリプトドメインをリセットし、プレイヤーで実行するのと同じようにアプリケーションの起動動作をシミュレートします。Project Settings でこれらの手順を使用不可にすると、Unity はこれらの手順をスキップします。
以下の図は、ドメイン リロードとシーン リロードが無効な場合に Unity がスキップする正確なイベントに関する詳細情報を示しています。青は、ドメインのリロードが無効な場合に Unity がスキップするイベントを示し、緑は、シーンのリロードが無効な場合に Unity がスキップするイベントを示します。
Event functions in the MonoBehaviour script lifecycle. Event functions skipped when domain reload is disabled are highlighted blue. Event functions skipped when scene reload is disabled are highlighted green.
シーンの再ロードとドメインの再ロードの両方が有効になっている場合の Unity の動作
シーン リロードとドメイン リロードを有効にすると、Unity が再生モードに入るときに実行するすべてのプロセスとイベントのリストが次に表示されます。
-
AssemblyReloadEventイベントが発生します。
beforeAssemblyReload -
C# ドメインが停止している。a.はすべての ScriptableObject と MonoBehaviour に対して呼び出されます。
OnDisable()b.Unity はすべての非同期操作が終了するのを待ちます。 -
すべての MonoBehaviour と ScriptableObject のステートはシリアライズされます。a.が呼び出されます。
OnBeforeSerialize()b.public フィールドと private フィールドの値は、でマークされたものを除いてすべてシリアライズされます 。[NonSerialized] -
マネージはネイティブの Unity オブジェクトから切断されます。
-
Unity の子ドメインが再ロードされます。'A') に作成します。Mono ドメインアンロード:i:イベントが発生します。
AppDomain.DomainUnload二。Unity の子ドメインが破棄される-
GC とファイナライザーが呼び出されます。
-
スレッドは終了します。
-
すべての JIT 情報が削除されます。
b.新しい Unity 子ドメインが作成されます。 -
-
アセンブリがロードされます。'A') に作成します。システムアセンブリがロードされます。b.Unity アセンブリがロードされます。C:ユーザーアセンブリがロードされます。
-
同期コンテキストが初期化されます。
-
スクリプトステートが復元されます。'A') に作成します。すべての Unity オブジェクトのスクリプト可能な部分が再作成されます。i:コンストラクターが呼び出され、Static にはデフォルト値が割り当てられます。b.すべての Unity オブジェクトのステートはデシリアライズされます。i:すべての Unity オブジェクトのシリアル化された状態が復元されます。
- イベントが発生します。
OnAfterDeserialize
ii.が呼び出されます。OnValidate()⁇属性を使用するスクリプトの場合:[ExecuteInEditMode]-
が呼び出されます。
OnEnable() -
が呼び出されます。
OnDisable() -
が呼び出されます。
OnDestroy()
-
InitializeOnLoad および InitializeOnLoadMethod を持つメソッドが呼び出されます。
-
AssemblyReloadEventが呼び出されます。
afterAssemblyReload