参考官网:http://www.tasharen.com/forum/index.php?topic=6711
基于 NGUI3.0.7
UICamera是NGUI的核心,主要用于处理输入事件并调用对应物体的OnClick、OnDrag等方法。虽然由于兼容原因该组件名字前缀为UI,实际上它能作用于场景中其他物体(前提是该物体带碰撞体且它的Layer属于Event Mask)。它有两个重要的属性:
①Event Type 排序点击区域(ScreenPoint)的物体,决定哪个能够优先接收事件
UI 根据Depth(原理是点击后用Physics.RaycastAll返回所有物体,并根据Depth进行排序)
World 根据与附着Camera的距离(原理是点击后用Physics.Raycast返回最近的单个物体)
②Event Mask 决定能够接受事件的Layer
当要调用物体的特定事件(OnClick等)时,它就调用Notify方法,通过SendMessage向物体发送参数:
void Test()
{
if(Input.GetMouseButtonDown(0))
Notify(currentTouch.pressed, "OnClick", null);
}
static public void Notify (GameObject go, string funcName, object obj)
{
if (go != null)
{
go.SendMessage(funcName, obj, SendMessageOptions.DontRequireReceiver);
if (genericEventHandler != null && genericEventHandler != go)
{
genericEventHandler.SendMessage(funcName, obj, SendMessageOptions.DontRequireReceiver);
}
}
}