Unity의 OnEnable은 프레임 종속일까?

 

OnEnable 이벤트의 작동방식

OnEnable 함수의 정확한 작동방식은 다음 중 무엇일까?

 

1. 매 Update에서 플래그를 체크하여 이벤트 발생

2. 매 FixedUpdate에서 플래그를 체크하여 이벤트 발생

3. 프레임에 종속되지 않고 즉시 발생

 

 

테스트 작성

테스트해보기 위해 한 프레임 안에서 오브젝트 껐다 켜는 테스트 3번.

[Button]
public void Test()
{
    gameObject.SetActive(false);
    gameObject.SetActive(true);

    gameObject.SetActive(false);
    gameObject.SetActive(true);

    gameObject.SetActive(false);
    gameObject.SetActive(true);
}

void OnEnable()
{
    Debug.Log("오브젝트 켜짐");
}

void OnDisable()
{
    Debug.Log("오브젝트 꺼짐");
}

private void Update()
{
    Debug.Log("Update");
}

 

 

결과

결론적으로 정답은 

3. 프레임에 종속되지 않고 즉시 발생 이다.

 

유니티 기본 Mono 이벤트 함수 중 OnEnable과 OnDisable은 

유니티 라이프 사이클 공식문서를 찾아보면 Update루프 바깥쪽에 그려진 것을 확인할 수 있다.

 

 

댓글

Designed by JB FACTORY