首页 > 代码库 > NGUI 通过按压Button控制角色持续行走

NGUI 通过按压Button控制角色持续行走

使用NGUI提供的API,想使用按压按钮来控制角色持续行走:

技术分享

却发现当点击前进按钮后,角色只是向控制方向移动了一小步,并且长时间按前进按钮,角色则会忽略该Click事件:

技术分享

由此感到蹊跷,角色移动是在短暂的按压按钮之后。那么必定有Button事件能够感应到按钮的Press事件。遂在NGUI/Interrection中找到了UI Button Message(Script),在里面找到了挂载Press函数的地方:

技术分享

成功挂载函数,然后走起,预料的结果并没有出现,实现效果与之前的OnClick一样,角色进向前移动一小步,只是实现的时序不同,OnPress是在点击按钮后释放按钮前触发,而OnClick实在点击按钮并松开后才出触发:

技术分享

而我想要的结果是:按住按钮,角色持续行走,松开按钮,角色停止移动。

经过一个晚饭后想了一个解决方案:既然OnPress和OnClick触发时机不同,那何不利用此间隙来达到目的?

实现方法如下:

1.在控制角色的脚本中设置一个标志变量,来标识行走按钮是否被按压,如bool isMove=false;2.在OnPress()函数中将isMove的值设为true,在OnClick()函数中将isMove的值设为false;3.在Update()函数中对isMove进行判断,如果isMove值为真,则执行相应的移动代码,否则不执行;

因为Update()函数每一帧都刷新,所以这样就可以利用按下与松开按钮的时间差来控制角色移动了。

由于长时间按压按钮将会导致OnClick()事件响应失败,所以将OnClick()事件更换为OnRelease事件:

技术分享

这样无论按压按钮多长时间,松开时都能响应OnRelease事件,这样就趋于完善了。

技术分享

 

不知还有啥简便方法,望园友一起分享:)

NGUI 通过按压Button控制角色持续行走