유니티로 프로젝트를 진행하면서 점점 많아지는 함수들에 실행 순서가 햇갈리게 되는 경우가 발생하게 됩니다..
사용자 정의 함수인 경우는 제가 결정하기에 그럴리 없지만!
awake , start 함수..... 어떤게 먼저 실행되고 둘의 차이가 무엇인지 정확히 알지 못하면 활용하기 어렵습니다.
그래서 이번엔 이벤트 함수들의 실행순서를 알아보기로 하였습니다!
공식문서!
모든 이벤트 함수를 소개하기에는...
너무 많기에 대표적인 함수들만 정리해보겠습니다.
먼저 대표 함수들의 출력 순서입니다.
이런 순으로 실행되게 됩니다!
먼저 시작부 입니다.
제일 먼저 스크립이 실행 된 이후 바로 실행 되는함수부터 보면
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()
게임 오브젝트가 완전히 파괴/삭제될 때 실행됩니다.
종료부분은 데이터를 마지막으로 어떻게 처리할지를 결정해서 구성해 주면 될 것 같습니다!
위의 함수 모두 실행하는데는 매우 짧은 시간이 걸리겠지만
어떻게 구성하느냐에 따라서 결과가 완전히 뒤바뀔수 있으므로 위의 함수들을 잘 숙지 해야 할 것 같습니다!
틀린점이 있다면 댓 달아주세요!
'유니티 최고 > 유니티 개념' 카테고리의 다른 글
유니티(Unity) 인스펙터창 관리 / [HideInInspector] ? , [SerializeField] ? (1) | 2023.06.08 |
---|---|
유니티(Unity) async await이란 & 동기식, 비동기식 작업 (0) | 2023.06.01 |
유니티(Unity) 코루틴(Coroutine) 이란 & 사용해보기 (1) | 2023.05.30 |
유니티(Unity) 싱글톤(Singleton) 이란 & 사용해보기 (씬이동시 데이터 유지방식) (0) | 2023.05.25 |
유니티(Unity) 특수 폴더 & 저장 경로 읽어오기 (0) | 2023.05.09 |
댓글