UI Camera
UICamera가 Input을 처리하는 방식
직접 구현하면 번거로운 것을 대신해 줘서 대단히 편리한데 이를 처리하는 방식은 아래와 같다.
- 모든 Input 이벤트는 NGUI의 UICamera가 처리한다.
- 사실 이는 당연한 방식이다. 카메라는 항상 떠 있으니까
- Input이 발생하면 UICamera는 그 Input의 성격을 파악해서 이게 어떤 이벤트인지 –클릭, 더블클릭, 드래그, 드롭 등등– 파악한다.
- 이는 UICamera.cs의 ProcessEvents 메소드에서 일어난다.
- Touch인지, Mouse인지 파악하고, Press인지 Release인지 파악하고 관련한 메소드를등등.
- 이벤트 타입 –3D World/ 3D UI/ 2D Word/ 2D UI– 과 충돌 타입 –Rigidbody/ Collider– 을 기준으로 Ray를 쏴서 타입에 맞는 GameObject를 가져온다.
- 해당 GameObject에 발생한 이벤트 –OnClick, OnPress, OnDrag 등등– 를 SendMessage로 보낸다.
- SendMessage는 Unity의 함수
- Input Event는 실체가 있는 것에서 발생하는 것이기 때문에 충돌한 GameObject에 메소드를 실행하게 하는 것은 매우 당연하다.
- GameObject에게 SendMessage를 보내기 때문에, 딱히 UIWidget을 달고 있지 않아도 Input 처리가 가능하다.
UICamera가 처리해주는 Input 목록
- OnHover
- OnPress
- OnClick
- OnDoubleClick
- OnSelect
- OnDrag
- OnDrop
- OnInput
- OnTooltip
- OnScroll
- OnKey
Tip