안녕하세요 극꼼이입니다.
지난 게시물들에서 변수를 다루었던 데에 이어서 오늘은 함수를 다뤄보겠습니다.
[서론]
유니티에는 사용자가 호출하지 않아도 자동으로 순서대로 호출되는 함수들이 있습니다.
* 위의 이미지는 자주 사용되는 함수들만 추려서 그린 것입니다.
*본론으로 들어가기 이전에 알아야 할 내용!
위와 같은 오브젝트가 있을 때,
아래 사진처럼 스크립트 왼쪽의 박스체크를 해제했을 때 스크립트의 비활성화 상태라 합니다.
이제 본론으로 들어가서 각 함수들이 언제 호출되는지 알아보도록 하겠습니다.
[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] > [C#]' 카테고리의 다른 글
[C# 기초] #06 : 주석 (주석의 종류, 단축키) (0) | 2021.07.10 |
---|---|
[C# 기초] #05 : 함수 - 함수의 기능과 종류 (0) | 2021.07.09 |
[C# 기초] #03 : 변수 - 접근지정자(public, private, protected) (0) | 2021.07.07 |
[C#] 열거형 Enum과 string,int 형변환 방법 (0) | 2021.06.28 |
[C#] 상속(virtual, override, abstract) (0) | 2021.06.26 |