参考链接:
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,最后触发点击事件
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?