标签:scn qbc min wxs ppm lsh update hwnd vga
使用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事件,这样就趋于完善了。
不知还有啥简便方法,望园友一起分享:)
标签:scn qbc min wxs ppm lsh update hwnd vga
原文地址:http://www.cnblogs.com/vmoor2016/p/6021275.html