unity 点击,长按和双击

转自:Unity 单击、双击、长按事件处理_unity button长按事件_司军礼的博客-CSDN博客

原理:

1.将操作抽象成三个类:ClickButton,DoubleClickButton,PressButton并实现各自的生命周期函数:

ClickButton:OnPointerDown启动监测,OnPointerUp:调用点击成功事件

DoubleClickButton:OnPointerDown启动监测,OnPointerClick:启动计时器,clickCount++,clickCount==2时调用成功事件,Update:检查持续时间,大于最长空闲时间调用失败事件。

PressButton:OnPointerDown启动监测,启动计时器,OnPointerUp:调用失败事件,Update:检查持续时间,大于长按设定时间调用成功事件。

2.ClickEvent

listenerList:注册进这个物体的 输入监测,在生命周期函数中循环调用这里面的输入监测函数。

OnReceive(bool success, IClickListener listener):

success:判断监测是失败还是成功

如果监测返回成功:还需要监测是否还有正在运行的监测(还没检测完),如果有就把这个事件缓存下来,等其他的监测完事后调用(如果其他的也是成功就会被覆盖掉,只保留最后的响应事件),等所有监测都返回结果的时候执行缓存下来的事件,也就实现了长按和双击中断单击时间。

我们项目中的实现方法:

由于项目较老,我们用的还是ugui那套,实现长按中断点击事件的方式是:

长按->调用长按的逻辑->出UI->UI挡住长按的UI(本质是让OnPointerUp方法失效)->中断OnPointerClick

posted @ 2023-11-03 18:41  mc宇少  阅读(536)  评论(0编辑  收藏  举报