❓ 이벤트 함수란?
Unity 게임 엔진은 기본적으로 유니티가 제어권을 갖지만 특정 시기가 되면 스크립트(C# 응용 소프트웨어 제어 코드)
안에 선언된 함수가 실행되며 제어권을 스크립트에게 넘겨줍니다. 스크립트에 작성된 함수가 실행이 완료 되면 다시 제어권은 유니티로 넘어오는 형태가 됩니다.
이러한 함수는 게임 플레이 중에 발생하는 이벤트에 대응하여 유니티에서 활성화되기 때문에 이벤트 함수라고 합니다.
특정 시기마다 게임 오브젝트를 검토하여 이벤트 함수 호철 조건이 충족 되는 게임 오브젝트가 있으면 해당 오브젝트가 가지고 있는 스크립에 선언되어 있는 이벤트 함수를 호출합니다.
초기화(Initialization) ➡ 에디터 실행(Editor) ➡ 물리(Physics) ➡ 입력 이벤트(Input Events) ➡ 게임 로직(Game Logic)
➡ Scene Rendering ➡ Gizmo Rendering ➡ GUI Rendering ➡ End of rame ➡ Pausing ➡ Decommissining
유니티에는 개발자의 편의를 위해 미리 정의해둔 이벤트 함수가 존재하며
사전에 정의된 순서, 특정 조건을 만족할 때 자동으로 호출된다
🔴 초기화(Initialization)를 위한 이벤트 함수
💡 void Awake()
씬이 시작할 때 (씬에서 오브젝트 마다 ) 한 번씩 호출 되는 함수
Game Object가 활성화 되어 있을 때 호출되며
Game Object가 비활성화 되어 있을 경우 활성화 시키게되면 호출된다.
💡 void Start()
첫 번째 프레임 업데이트가 실행되기 직전에( Update() 호출 ) 직전 1회 호출
Game Object, Component가 활성화 되었을 때만 호출된다.
Awake() ➡ Start()
코루틴 형태로 호출이 가능하다.
private IEnumerator Start() { ... }
💡 void OnEnable()
컴포넌트가 비활성화 되었다가 다시 활성화 될 때 마다 1회 호출
Awake() ➡ OnEnable() ➡ Start()
Game Object, Component가 활성화 되었을 때만 호출된다.
❓ 호출 순서 : Awake() ➡ OnEnable() ➡ Start()
🟠 업데이트를 위한 이벤트 함수
💡 void Update()
현재 씬이 시작된 후 매 프레임 마다 호출
Game Object, Component가 활성화 되었을 때만 호출된다.
💡 void LateUpdate()
현재 씬의 모든 Update() 메소드 실행 직후 호출
Game Object, Component가 활성화 되었을 때만 호출된다.
Ex) 플레이어 캐릭터, 카메라와 같이 서로 다른 오브젝트가 존재할 때 플레이어 캐릭터를 쫒아다니는 카메라를 구현
플레이어의 이동은 Update에서 구현후 LateUpdate에서 플레이어의 위치를 바탕으로 카메라를 이동 시킨다.
💡 void FixedUpdate()
프레임에 영향을 받지 않고 1초에 정해진 횟수만큼 호출
기본 값은 0.02초로 (default : 1초 50회)
Tip. Edit - Project Settings - Time의 Fixed Timestep에서 호출 주기 설정 가능
Game Object, Component가 활성화 되었을 때만 호출된다.
🟡 해체를 위한 이벤트 함수
💡 void OnDestroy()
게임오브젝트가 파괴될 때 1회 호출된다.
씬이 변경되거나 게임이 종료될 때도 오브젝트가 파괴되기 때문에 호출된다.
Game Object가 활성화 되었을 때만 호출된다.
컴포넌트가 비활성화 되어 있어도 호출
💡 void OnApplicationQuit()
게임이 종료될 때 1회 호출된다.
Unity Editor에서는 플레이 모드를 중지할 때 호출된다.
Game Object
가 활성화 되었을 때만 호출된다.
💡 void OnDisable()
컴포넌트가 비활성화 될 때 마다 1회 호출
Game Object, Component가 활성화 되었을 때만 호출된다.
참조
https://docs.unity3d.com/kr/current/Manual/ExecutionOrder.html
이벤트 함수의 실행 순서 - Unity 매뉴얼
Unity 스크립트를 실행하면 사전에 지정한 순서대로 여러 개의 이벤트 함수가 실행됩니다. 이 페이지에서는 이러한 이벤트 함수를 소개하고 실행 시퀀스에 어떻게 포함되는지 설명합니다.
docs.unity3d.com
https://www.youtube.com/watch?v=QFe-exD2PY8&list=PLC2Tit6NyViewOPACJai5zNAfZuUW8aYq&index=10