안녕하세요. Base Of Coding입니다.
오늘은 유니티에서 제공하는 기본 메서드인 이벤트 함수에 대해서 작성해보려고 합니다.
제공하는 기본 이벤트 함수들에 대해서는 알고는 있지만, 순서는 헷갈려서 이전에 올려놓은 글 중에 유니티 플로우 차트라는 것이 있습니다. 함수 실행 순서인데요. 그 부분을 보시면서 함수의 실행순서를 아시는 것이 좋다고 생각이 듭니다.
기본적으로 많이 사용하는 이벤트 함수에 대해서만 작성되었습니다. 나머지 궁금하신 부분들은 유니티 API를 참고해주시길 바랍니다.
1. Awake
- 항상 Start 함수 이전, 혹은 활성화 직후에 호출하는 함수.
주의 할 점으로는 씬이 시작할 때 게임오브젝트가 비활성화 상태인 경우, 활성화 되기 전까지 호출을 하지 않는다는 점입니다.
2. OnEnable
- 활성화 직후에 호출하게 되는 함수.
주의 할 점으로는 OnEnable함수는 Awake와 Start와는 다르게 활성화가 될 때마다 호출을 시켜주기 때문에, 잘 생각하셔서 OnEnable 함수에 스크립트를 작성하셔야 합니다.
3. Reset
- 에디터에서 처음 연결될 때 혹은, 해당 스크립트 컴포넌트에서 Reset 버튼을 클릭했을 때 호출하는 함수.
4. Start
- 컴포넌트 활성화 직후 호출하게 되는 함수.
5. OnTriggerXXX / OnCollisionXXX
- 이 둘의 차이는 물리적 연산을 하는 Collision과 물리적 연산을 안하는 Trigger의 차이이다. Collision은 충돌, Trigger는 충돌체가 겹쳤는지를 확인한다.
- OnTriggerEnter / OnCollisionEnter
- OnTriggerEnter는, 콜라이더를 지나갈 경우 실행, OnCollisionEnter는 충돌이 일어났을 때 실행하는 함수.
- OnTriggerStay / OnCollisionStay
- 충돌 또는 콜라이더를 지나갔을 때 그 충돌된 지점을 머물고 있을 때 실행을 하게 된다. 하지만,
리지드바디 2D에선, Stay를 하게 될 경우, 리지드바디의 연산을 이용하기 때문에 24번만 호출하게 된다.
Stay에 있는 코드들을 계속 실행하고 싶을 경우의 방법은
리지드바디 2D 컴포넌트에서 sleeping mode를 never sleep으로 바꾸어주면, 계속 호출이 되게 된다.
- OnTriggerExit / OnCollisionExit
- Collision 또는 Trigger 상태를 나갔을 경우에 실행.
6. OnMouseDown
- 마우스로 콜라이더가 부착된 오브젝트를 클릭할 경우
7. OnMouseExit
- 마우스 포인터가 부착되어 있는 콜라이더를 나갈 경우
8. OnMouseDrag
- 마우스로 오브젝트를 드래그 한 경우
9. FixedUpdate
- 0.02초마다 기본적으로 호출하는 함수이지만, 시간은 변경이 가능합니다.
10. Update
- 한 프레임마다 호출하게 되는 함수.
11. LateUpdate
- Update 후, 매 프레임마다 호출하게 되는 함수, LateUpdate는, 카메라 이동에 많이 사용하게 됩니다.
12. OnBecameVisible / OnBecameInvisible
- 오브젝트가 카메라에 표시되거나 표시되지 않게 될 때 호출하게 되는 함수.
이렇게 이벤트 함수에 대해서 알아보았습니다. 순서도와 함께 익히게 되면, 아주 잘 활용이 가능한 함수들이기 때문에, 익혀두시면 좋을 것 같아 올려보았습니다.
지금까지 Base Of Coding이였습니다. 감사합니다.