씬의 이벤트 실행 순서(Awake, Start 이외)

2024. 11. 30. 01:41·코드 및 공부/씬

유니티 버전 - 2022.3.17f1

 

 

 

 

 

목차


  • RuntimeInitializeOnLoadMethod
  • SceneManager.sceneLoaded
  • 전체 정리(실행 순서)

 

 

 

 

 

RuntimeInitializeOnLoadMethod


먼저 RuntimeInitializeOnLoadMethod 입니다, 해당 어트리뷰트를 사용하는 메서드는 반드시 스태틱이여야합니다, 자세한 설명은 공식문서를 참고 바랍니다, 실행순서는 가장 아래에 기술하겠습니다

 

 

 

더보기
 

Unity - Scripting API: RuntimeInitializeOnLoadMethodAttribute

RuntimeInitializeOnLoadMethodAttribute class in UnityEngine / Inherits from:Scripting.PreserveAttribute / Implemented in:UnityEngine.CoreModule Description Use this attribute to get a callback when the runtime is starting up and loading the first scene. Us

docs.unity3d.com

 

 

 

 

 

 

SceneManager.sceneLoaded


Unity의 씬 로드 이벤트로, 새로운 씬이 로드되었을 때 실행됩니다, 로드 방식(Single 또는 Additive)에 따라 동작이 다릅니다, 아래와 같이 콜백 메서드를 구독시키는 역할을 합니다

 public static void OnLoadCompleted(UnityAction<Scene, LoadSceneMode> callback)
{
    SceneManager.sceneLoaded += callback;
}

 

 

 

 

 

실행순서


RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSplashScreen)

 

RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)

 

씬 로드 및 GameObject 생성

 

Awake()

OnEnable()

RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterSceneLoad)

SceneManager.sceneLoaded

Start()

 

 

 

위에서부터 빠른 순서입니다

 

 

 

 

 

마치며


하지만 위에서 설명한 이벤트들은, 이벤트간의 실행 순서를 보장받을 수 없습니다

 

예를 들어 Awake가 10개 있다면, 어떤 스크립트의 Awake가 먼저 실행될지 모릅니다, 그러므로 위의 순서를 잘 이용하여서 초기화, 참조등의 구성을 하면 좋겠습니다

 

또한 Edit -> Project Settings -> Script Execution Order를 사용하여 스크립트의 실행순서를 조절할 수 있으나, 게임의 코어적인 부분이 아니라면, 이것을 먼저 조절하는 것보다는 위의 순서를 이용하여 초기화, 참조등의 구성을 하는 것을 추천합니다

'코드 및 공부 > 씬' 카테고리의 다른 글

allowSceneActivation = false 를 이용한 씬 미리 로딩(PreLoadScene)  (0) 2025.03.21
LoadSceneMode.Single과 Additive 의 이벤트함수 실행 순서  (0) 2025.03.20
씬 전환시 해당씬의 CinemachineConfiner로 교체하기  (1) 2024.12.23
Instantiate시 오브젝트가 Addtive씬에 생기는 문제  (0) 2024.12.11
씬 관리 (1)  (4) 2024.09.22
'코드 및 공부/씬' 카테고리의 다른 글
  • LoadSceneMode.Single과 Additive 의 이벤트함수 실행 순서
  • 씬 전환시 해당씬의 CinemachineConfiner로 교체하기
  • Instantiate시 오브젝트가 Addtive씬에 생기는 문제
  • 씬 관리 (1)
ekrxjvpvj0110
ekrxjvpvj0110
유니티 개발 관련 자료
  • ekrxjvpvj0110
    ekrxjvpvj0110의 유니티 개발
    ekrxjvpvj0110
    • 전체 글 (73)
      • 코드 및 공부 (72)
        • 이론 (4)
        • 데이터 관리 (11)
        • 입력 관리 (9)
        • 최적화 (10)
        • UI (2)
        • 통신 (0)
        • 카메라 (3)
        • 오디오 (3)
        • 물리 (3)
        • 씬 (6)
        • 기타 (21)
        • 분류없음 (0)
  • 인기 글

  • hELLO· Designed By정상우.v4.10.3
ekrxjvpvj0110
씬의 이벤트 실행 순서(Awake, Start 이외)
상단으로

티스토리툴바