我的使用场景
一个射击游戏,由于我的update()函数中涉及到射线的检测等诸多操作,所以使用了FixedUpdate()进行。但是,我发现一次点击有时(大概率)会向服务端发送两条数据,开始以为是网络模块出了问题,使用wireshark抓包以及分析网络数据收发代码后发现,并非代码的锅。我猜测是一次点击,被检测到了两次,简单打印一下log,果然是这样的。
解决办法:
1. 使用FixedUpdate()不受游戏帧率的影响,可以改用update()来进行,可以实现正常的一次点击响应一次,但是画面看起来会“卡卡的”,因为update()的刷新率和设备的性能以及需要渲染的工作量有关,会比默认的FexedUpdate(要低一些,故而会“卡卡的”;
2. 调整FixedUpdate()的固定刷新时间timestep
Edit -> Project setting -> time -> FixedTimeStep
默认0.02,意味着,一秒要刷新50次,这样刷新太快可能会引起多次检测到鼠标动作(我猜测),将其调大(我调了0.033,这样相当于30fps的样子会好一些)