[Unity]/[C#]

[C# 기초] #04 : 함수 - 라이프사이클(Start, Update 등)

극꼼 2021. 7. 8. 12:00
반응형


안녕하세요 극꼼이입니다.

지난 게시물들에서 변수를 다루었던 데에 이어서 오늘은 함수를 다뤄보겠습니다.

 

[서론]

유니티에는 사용자가 호출하지 않아도 자동으로 순서대로 호출되는 함수들이 있습니다.

* 위의 이미지는 자주 사용되는 함수들만 추려서 그린 것입니다.

 

 

*본론으로 들어가기 이전에 알아야 할 내용!

위와 같은 오브젝트가 있을 때,

아래 사진처럼 스크립트 왼쪽의 박스체크를 해제했을 때 스크립트의 비활성화 상태라 합니다.


 

이제 본론으로 들어가서 각 함수들이 언제 호출되는지 알아보도록 하겠습니다.

 

[Awake]

오브젝트가 생성(또는 프리팹의 인스턴스화)되거나 초기화된 직후에 호출됩니다.

오브젝트를 활성화시킬 때 단 한 번 함수가 호출되며, 이때 스크립트가 비활성화 된 상태여도 호출됩니다.

 

[OnEnable]

스크립트를 활성화 할 때 마다 호출됩니다. 

 

[Start]

스크립트가 활성화 된 후, 첫번째 Update문이 돌기 전에 호출됩니다. 

 

[FixedUpdate]

컴퓨터의 사양이나 상태에 따라 달라지는 프레임 속도와 관계없이, Fixed Timestep에 설정된 값(Default 0.02초)에 따라 호출 주기가 일정합니다. 때문에 한 프레임에 여러번 호출될 수도(프레임 속도가 느릴 경우), 호출이 되지 않을수도(프레임 속도가 빠를 경우) 있습니다.

규칙적으로 호출되기 때문에 주로 물리 효과가 적용된 오브젝트(Rigidbody)를 조정할 때 사용됩니다.

 

[OnTrigger]

오브젝트의 Collider의 isTrigger에 체크했을 경우(다른 오브젝트가 들어올 경우 감지) 호출됩니다. 

[OnCollision]

양쪽 다 isTrigger가 켜져 있지 않을 때 콜라이더끼리 충돌하면 반응하는 함수입니다.

 

[Update]

스크립트가 활성화된 상태일 때 매 프레임마다 호출됩니다. 

 

[LateUpdate]

모든 Update함수가 호출된 후 호출됩니다. 

Update에서 오브젝트의 움직임을 조정하는 경우, LateUpdate에서 카메라의 움직임을 조정합니다. 

 

[OnApplicationQuit]

플레이 모드를 종료할 때(빌드했을 경우 프로그램을 종료할 때) 호출됩니다. 

 

[OnDisable]

스크립트가 비활성화될 때 호출됩니다. 

 

[OnDestroy]

오브젝트의 마지막 프레임 이후에 호출됩니다. (Destroy 함수 사용 이후 또는 씬 종료 시)

 


[결론]

함수의 라이프 사이클에 대해 전반적으로 알고 있어야 함수를 어디서 호출할 지 지정할 수 있습니다.

 

위의 함수들 이외의 라이프 사이클 함수들에 대해 더 자세히 알아보시려면 유니티 공식 사이트에 들어가 보시길 바랍니다.

* docs.unity3d.com/kr/current/Manual/ExecutionOrder.html

 

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

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

docs.unity3d.com

 

반응형