Version: 2019.3
언어: 한국어
씬 재로드
에디터 문제 해결

플레이 모드 시작 세부 정보

씬 재로드와 도메인 재로드를 활성화한 경우 플레이 모드 시작 시 Unity는 다음과 같은 프로세스와 이벤트를 수행합니다.

  1. AssemblyReloadEvent beforeAssemblyReload 이벤트가 발생합니다.
  2. C# 도메인이 중지됩니다.
    a. OnDisable()이 모든 ScriptableObject와 MonoBehaviour에 대해 호출됩니다.
    b. Unity가 모든 동기화 작업이 끝날 때까지 기다립니다.
  3. 모든 MonoBehaviour와 ScriptableObject의 상태가 직렬화됩니다.
    a. OnBeforeSerialize()가 호출됩니다.
    b. [NonSerialized]로 표시된 값을 제외하고, 모든 퍼블릭 및 프라이빗 필드 값이 직렬화됩니다.
  4. 관리되는 래퍼가 네이티브 Unity 오브젝트에서 분리됩니다.
  5. Unity 자식 도메인이 다시 로드됩니다.
    a. 모노 도메인이 언로드됩니다.
    i. AppDomain.DomainUnload 이벤트가 발생합니다.
    ii. Unity 자식 도메인이 삭제됩니다.
    1. GC와 파이널라이저가 호출됩니다.
    2. 스레드가 종료됩니다.
    3. 모든 JIT 정보가 삭제됩니다.
    b. 새로운 Unity 자식 도메인이 생성됩니다.
  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. AssemblyReloadEvent afterAssemblyReload가 호출됩니다.

씬 재로드
에디터 문제 해결