Version: 2019.3
シーンの再ロード
エディターのトラブルシューティング

Enter Play Mode の詳細

以下は、Enter Play Mode で Scene Reloading と Domain Reloading が有効な場合に、Unity が行う処理とイベントすべてのリストです。

  1. AssemblyReloadEventbeforeAssemblyReload イベントが発生します。
  2. C# ドメインが停止します。 a. OnDisable() がすべての ScriptableObjects と MonoBehaviours に対して呼び出されます。
    b. Unity はすべての非同期操作が終了するのを待ちます。
  3. すべての MonoBehaviours と ScriptableObjects の状態はシリアライズされます。 a. OnBeforeSerialize() が呼び出されます。
    b. プライベートとパブリックのフィールド値は、[NonSerialized] でマークされたもの以外はすべてシリアライズされます。
  4. マネージラッパーはネイティブの Unity オブジェクトから切り離されています。
  5. Unity Child Domain は再ロードされます。 a. Mono ドメインはアンロードされます。
    i. AppDomain.DomainUnload イベントが発生します。
    ii. Unity Child Domain が除去されます。
    1. GC とファイナライザーが呼び出されます。
    2. スレッドは終了されます。 3. すべての JIT 情報は削除されます。 b. 新しい Unity Child Domain が作成されます。
  6. アセンブリがロードされます。
    a. システムアセンブリがロードされます。
    b. Unity アセンブリがロードされます。
    c. ユーザーアセンブリがロードされます。
  7. 同期コンテキストが初期化されます。
  8. スクリプトの状態が復元されます。
    a. すべての Unity オブジェクトのスクリプト可能な部分が再作成されます。
    i. コンストラクターが呼び出され、静的変数はそのデフォルト値を割り当てられます。
    b. すべての Unity オブジェクトの状態はデシリアライズされます。 i. すべての Unity オブジェクトのシリアライズされた状態は復元されます。
    1. OnAfterDeserialize イベントが発生します。
    ii. OnValidate() が呼び出されます。
    iii. [ExecuteInEditMode] 属性を使うスクリプトに対して
    1. OnEnable() が呼び出されます。 2. OnDisable() が呼び出されます。
    3. OnDestroy() が呼び出されます。
  9. InitializeOnLoadInitializeOnLoadMethod を持つメソッドが呼び出されます。
  10. AssemblyReloadEventafterAssemblyReload が呼び出されます。

シーンの再ロード
エディターのトラブルシューティング
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961