시점 함수란 C# script에서 유니티가 미리 정해 놓은 순서에 따라 실행되는 정적 함수들이다.
시점 함수들을 통해 게임 내 오브젝트들이 각각 어떤 순서대로 실행될 지를 정해줄 수 있다.
주요함수들을 알아보자면
https://docs.unity3d.com/kr/2021.3/Manual/ExecutionOrder.html
이벤트 함수의 실행 순서 - Unity 매뉴얼
Unity 스크립트를 실행하면 사전에 지정한 순서대로 여러 개의 이벤트 함수가 실행됩니다. 이 페이지에서는 이러한 이벤트 함수를 소개하고 실행 시퀀스에 어떻게 포함되는지 설명합니다.
docs.unity3d.com

-초기화 과정-
C# 스크립트가 추가된 오브젝트가 유니티엔진에 의해 자신의 차례가 오면 첫 차례시에만 초기화해주는 시점함수들이 실행된다. 일반적으로 초기설정을 Awake() 혹은 Start()를 통해서 해주고 혹시라도 더빠르게 해줄 필요가 있을시 생성자를 만들어서 초기화를 해준다. ( 생성자는 Awake보다 먼저 실행된다)
-Awake : 씬이 시작할 때 한번 호출되며 프리팹이 인스턴스화 된 직후에 호출된다. 만약 게임 오브젝트가 비활성화 상태인 경우 호출되지 않는다.
-Start : 첫 번째 프레임 업데이트 전에 호출된다.



-업데이트 과정-
게임이 실행되는 중에 게임 로직, 상호작용, 애니매이션들을 업데이트해주기 위해서 주기적으로 실행되는 함수들이다.
-FixedUpdate : 업데이트 루프의 가장 처음 실행된다. 프레임 속도가 낮은 경우 프레임 당 여러번 호출될 수도 있고 프레임 속도가 빠른경우 호출되지 않을 수도 있다.
-Update : 게임 작동중 실행되는 가장 기초적인 업데이트 함수이다. 프레임당 한 번 호출된다.
-LateUpdate : Update의 계산이 완료된 이후 호출되는 함수이다. 프레임당 한번 호출된다. 캐릭터 움직임 Update에서 끝난 후 카메라의 움직임을 조정하는 것과 같은 상황에 사용될 수 있다.
-On~: ()안의 상태 혹은 상호작용이 감지되었을 때 호출된다. ex) OnCollision() 충돌이 발생했을 때
-yield~ : 코루틴 함수로 Update 함수가 반환된 후에 실행된다.

-종료 과정-
-OnDestroy : 오브젝트가 파괴될 때 호출된다. 오브젝트가 존재하는 마지막 프레임에 업데이트를 마친 후 호출된다.
-OnApplicaiontQuit : 애플리케이션 종료 전 모든 함수에서 호출
각 함수들이 나름대로 각자의 역할이 있지만 모든 함수가 다 쓰일 필요는 없으며 각 역할을 다른 함수가 대신할 수 도 있다. 또한 여러 오브젝트에서 각각의 C# script들이 실행되므로 이러한 C# script들의 실행 순서도 잘 고려할 필요가 있다.
C# script의 순서는 Edit -> Project Setting -> Script Execution Order 에서 조정할 수 있다.
'게임 > Unity' 카테고리의 다른 글
Unity 델타 타임 (0) | 2023.03.29 |
---|