게임 루프 함수
Awake()
- 스크립트의 활성화 여부와 관계 없이, 오브젝트가 활성화되어 있다면 가장 먼저(Start보다 우선) 호출된다.
- 단, Start와 마찬가지로 오브젝트가 비활성화된 채로 게임 루프에 진입하면, 오브젝트가 활성화되는 시점에 호출된다.
- 프리팹을 Instantiate로 생성하는 경우, 생성 직후 호출된다.
Start()
- 스크립트가 활성화되어 있을 때 첫 번째 Update()가 호출되기 전에 호출된다.
- 스크립트가 비활성화된 채로 게임 루프에 진입하면, 스크립트가 활성화되는 시점에 호출된다.
이하의 함수들은 Start와 마찬가지로 스크립트에 바인딩되며, 스크립트가 활성화되어 있을 때에만 동작한다.
Update()
- 매 프레임 호출된다.
- 경과 시간의 일관성을 보장할 수 없다.
- 매 프레임 수행되어야 하는 동작을 정의한다.
FixedUpdate()
- 일정한 주기(Fixed TimeStep) 간격으로 호출된다. 실제로 다른 스레드에서 일정 간격마다 호출하는 건 아니고, FixedUpdate의 호출 여부를 결정하는 곳에서 누적된 시간에서 TimeStep을 빼가며 반복 호출하는 식이다.
- 경과 시간의 일관성이 보장된다.
- 물리 시뮬레이션은 FixedUpdate가 호출된 후 일어난다.
LateUpdate()
- Update()가 호출된 다음으로 호출된다.
- 주로 Update에서 값을 바꾸고, 그에 따른 처리를 LateUpdate에서 해주는 방식으로 사용한다.
OnDrawGizmos()
- 렌더링 루프에서 기즈모를 그릴 때 호출되며 여기서 Gizmo 클래스를 사용해 기즈모를 그릴 수 있다.
OnGUI()
- 렌더링 루프에서 GUI를 그릴 때 호출되며 여기서 GUI 클래스를 사용해 GUI를 그릴 수 있다.
- GUI이므로 실제 게임에서도 그려지는 것이다.
이벤트 함수
OnBecameVisible(), OnBecameInvisible()
- 게임 오브젝트에 부착된 렌더러가 카메라 절두체 공간에 들어올 때 / 벗어날 때 호출된다.
OnCollisionEnter(), OnTriggerEnter(), -Stay(), -Exit()
- 콜라이더가 부착된 오브젝트가 다른 콜라이더와 충돌, 트리거 오버랩, 지속, 탈출하는 경우 호출된다.
OnMouseEnter(), OnMouseDown(), OnMouseDrag, OnMouseOver(), OnMouseExit()
- 클라이언트의 마우스가 콜라이더 위에 진입, 그 상태로 클릭, 드래그, 지속, 탈출하는 경우에 호출된다.
OnDestroy()
- 게임 오브젝트가 파괴되기 전에 호출된다.
이 외에도 엄청나게 많은 상속 가능한 함수들이 있다. 자세한 내용은 유니티 Docs를 참고하자.
https://docs.unity3d.com/kr/2021.1/ScriptReference/MonoBehaviour.html