유니티 Start, yield 실행 시점

jkjkbk·2023년 4월 17일
0

Unity

목록 보기
1/16

이벤트 함수 실행 순서

1. Prefab의 Resources.Load 와 Instantiate의 호출 과정

Resources.Load() -> Prefab의 Construtor 호출 ->
Instantiate() -> 생성된 객체의 Contructor 호출 -> 생성된 객체의 Awake() -> 생성된 객체의 OnEnable() -> 호출부 명령어..

2. Awake와 OnEnable은 Instantiate()를 호출하여 객체를 만드는 즉시 이벤트 시점과 activeSelf에 상관없이 한 번은 실행되는 것이 보장됨

3. SetActive()를 호출 하는 즉시 OnEnable, OnDisable 실행함(한 프레임에서 여러번 실행 가능)

4. Start 실행 이후에는 이벤트 루프에 맞춰 실행됨

5. 코루틴

  • 씬 재생 후 ~ 첫 EndOfFrame 이전
    Awake에서 StartCoroutine한 코루틴의 yield return null은 StartCoroutine를 호출한 프레임에서 실행됨
    Awake에서 StartCoroutine한 코루틴의 yield EndOfFrame은 StartCoroutine를 호출한 프레임에서 실행되지 않음
    OnEnable yield return null - O
    OnEnable yield EndOfFrame - X
    Start null - X
    Start EndOfFrame - X
    FixedUpdate null - X
    FixedUpdate EndOfFrame - X
    Update null - X
    Update EndOfFrame - X
    LateUpdate null - X
    LateUpdate EndOfFrame - X

  • 첫 EndOfFrame 이후
    FixedUpdate null - X. StartCoroutine를 호출한 프레임에서 실행되지 않았고 다음 프레임에서 실행됨
    FixedUpdate EndOfFrame - O. StartCoroutine를 호출한 프레임에서 실행됨
    Update null - X
    Update EndOfFrame - O
    LateUpdate null - X
    LateUpdate EndOfFrame - O

6. 처음부터 존재하는 게임 오브젝트에서 생성된 객체의 Start가 실행하는 시점

사각형은 생성시점. 원은 Start 실행 시점
FixedUpdate나 Update, LateUpdate를 중점으로 보면 될듯

0개의 댓글