参考链接:
https://zhuanlan.zhihu.com/p/74520501
https://blog.csdn.net/ecidevilin/article/details/52510373
点击流程分3个部分:
一.封装点击信息
将Input.GetTouch返回的Touch结构体,包装成PointerEventData
二.找到点击对象
UI的点击判断,主要是根据点是否在UI的矩形范围内,而并非使用物理射线
将点击到的第一个对象赋予给pointerData.pointerCurrentRaycast
三.传递点击信息
ExecuteEvents.GetEventHandler<IPointerClickHandler>(currentOverGo):从currentOverGo开始往上找,找到一个实现了IPointerClickHandler接口的go
ExecuteEvents.Execute(pointerEvent.pointerPress, pointerEvent, ExecuteEvents.pointerClickHandler):将点击信息传递到go上的接口
同时也可以看到,要按下和抬起时是同一个go,才会响应点击事件
例子:
点击按钮上的文字,首先通过点击判断确定Text这个go,然后从Text往上找,找到Button,最后触发点击事件