본문 바로가기
유니티 최고/유니티 개념

유니티(Unity) 주요 이벤트 함수의 실행 순서

by Lee_story_.. 2023. 5. 15.
728x90

 

유니티로 프로젝트를 진행하면서 점점 많아지는 함수들에 실행 순서가 햇갈리게 되는 경우가 발생하게 됩니다..

사용자 정의 함수인 경우는 제가 결정하기에 그럴리 없지만!

 

awake , start  함수..... 어떤게 먼저 실행되고 둘의 차이가 무엇인지 정확히 알지 못하면 활용하기 어렵습니다. 

 

 

 

그래서 이번엔 이벤트 함수들의 실행순서를 알아보기로 하였습니다!

 

공식문서!

 

이벤트 함수의 실행 순서 - Unity 매뉴얼

Unity 스크립트를 실행하면 사전에 지정한 순서대로 여러 개의 이벤트 함수가 실행됩니다. 이 페이지에서는 이러한 이벤트 함수를 소개하고 실행 시퀀스에 어떻게 포함되는지 설명합니다.

docs.unity3d.com

 

 

모든 이벤트 함수를 소개하기에는...

더 있습니다....

 

 

 

 

너무 많기에 대표적인 함수들만 정리해보겠습니다.

 

 

먼저 대표 함수들의 출력 순서입니다.

이런 순으로 실행되게 됩니다!

 

 

 


먼저 시작부 입니다. 

제일 먼저 스크립이 실행 된 이후 바로 실행 되는함수부터 보면

 

Awake >> OnEnable >> Start  순으로 실행되는 함수들이 있습니다.

 

 

이것들의 차이가 무엇인가....

바로 게임오브젝트와 스크립트의 상태입니다.

 

 

가장 먼저 실행 되는 Awake()

awake함수는 Start함수 이전 프리팹이 인스턴스화 된 직후에 호출된다고 합니다. 

 + 게임 오브젝트만 enable(활성화) 되어 있으면 실행됩니다. 

 + 최초 1회 실행하고 끝

 

OnEnable()

오브젝트 활성화 직후 이함수가 실행됩니다.

+ 게임 오브젝트와 스크립이 enable(활성화) 될 때 마다 실행됩니다.

+ 여러번 실행 가능!

 

시작부의 마지막 Start() 

첫 번째 프레임 업데이트 전에 호출됩니다.

+ 게임 오브젝트와 스크립이 enable(활성화) 되어 있어야 실행

+ 최초 1회 실행하고 끝

 

 

 

비슷하지만 약간씩 다르네요

onEnable 함수는 여러번 실행 가능 하다는 점을 이용해서 사용가능 할 것 같습니다.   

 

 


다음은 업데이트 부분입니다.

FixedUpdate() >> Update() >> LateUpdate()  순으로 동작하며

 

각각 완전히 다른 기능으로 사용됩니다. 

 

FixedUpdate()

일정한 프레임을 유지하여 업데이트 시켜주는 함수

+ 물리 효과 적용에 많이 사용됩니다!  (캐릭터 이동, 충돌 검사 등등)

 

 

Update()

프레임 단위로 작동하나 프로그램에서 돌아가는 작업의 수에 따라 프레임길이가 달라져

호출되는 주기가 일정하지 않을 수 있다...

+ 단순 키입력, 타이머에 사용

 

 

LateUpdate()

업데이트 함수가 끝나고 나서 마지막으로 호출됨

+ 모든 이동 함수가 끝나고 카메라를 이동 할때 사용

+ 모든 처리과정이 끝나고 마지막에 업데이트 시켜줄때 사용가능

 

 

 

필요한 기능에 따라 사용하면 될 것 같습니다!

 

 

 


마지막으로 종료 부분입니다. 

종료 할때는 아래의 순서로 진행됩니다.

OnApplicationQuit() >> OnDisable() >> OnDestroy()

 

 

OnApplicationQuit()

프로그램이 종료 전 모든 게임 오브젝트에서 호출됩니다. 

 

 

OnDisable()

게임 오브젝트가 enable(비활성화)될 때 실행됩니다.

+ OnEnable()함수와 반대!

+여러번 호출가능

 

 

OnDestroy()

게임 오브젝트가 완전히 파괴/삭제될 때 실행됩니다.

 

 

 

종료부분은 데이터를 마지막으로 어떻게 처리할지를 결정해서 구성해 주면 될 것 같습니다!

 


 

 

 

 

위의 함수 모두 실행하는데는 매우 짧은 시간이 걸리겠지만

어떻게 구성하느냐에 따라서 결과가 완전히 뒤바뀔수 있으므로 위의 함수들을 잘 숙지 해야 할 것 같습니다!

 

 

 

 

틀린점이 있다면 댓 달아주세요!

댓글