🌍 Unity/유니티 엔진 동작 관련
Unity의 OnEnable은 프레임 종속일까? / 유니티 라이프 사이클, 호출순서
맨텀
2021. 5. 4. 17:35
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루프 바깥쪽에 그려진 것을 확인할 수 있다.