unity | 一次鼠标点击,触发两次?

时间:2024-04-09 18:01:53

我的使用场景

一个射击游戏,由于我的update()函数中涉及到射线的检测等诸多操作,所以使用了FixedUpdate()进行。但是,我发现一次点击有时(大概率)会向服务端发送两条数据,开始以为是网络模块出了问题,使用wireshark抓包以及分析网络数据收发代码后发现,并非代码的锅。我猜测是一次点击,被检测到了两次,简单打印一下log,果然是这样的。

unity | 一次鼠标点击,触发两次?

 解决办法:

1. 使用FixedUpdate()不受游戏帧率的影响,可以改用update()来进行,可以实现正常的一次点击响应一次,但是画面看起来会“卡卡的”,因为update()的刷新率和设备的性能以及需要渲染的工作量有关,会比默认的FexedUpdate(要低一些,故而会“卡卡的”;

unity | 一次鼠标点击,触发两次?

 2. 调整FixedUpdate()的固定刷新时间timestep

Edit -> Project setting -> time -> FixedTimeStep 

默认0.02,意味着,一秒要刷新50次,这样刷新太快可能会引起多次检测到鼠标动作(我猜测),将其调大(我调了0.033,这样相当于30fps的样子会好一些)

unity | 一次鼠标点击,触发两次?

 

参考:Unity游戏暂停之Update与FixedUpdate区别