我的使用場景
一個射擊游戲,由於我的update()函數中涉及到射線的檢測等諸多操作,所以使用了FixedUpdate()進行。但是,我發現一次點擊有時(大概率)會向服務端發送兩條數據,開始以為是網絡模塊出了問題,使用wireshark抓包以及分析網絡數據收發代碼后發現,並非代碼的鍋。我猜測是一次點擊,被檢測到了兩次,簡單打印一下log,果然是這樣的。
解決辦法:
1. 使用FixedUpdate()不受游戲幀率的影響,可以改用update()來進行,可以實現正常的一次點擊響應一次,但是畫面看起來會“卡卡的”,因為update()的刷新率和設備的性能以及需要渲染的工作量有關,會比默認的FexedUpdate(要低一些,故而會“卡卡的”;
2. 調整FixedUpdate()的固定刷新時間timestep
Edit -> Project setting -> time -> FixedTimeStep
默認0.02,意味着,一秒要刷新50次,這樣刷新太快可能會引起多次檢測到鼠標動作(我猜測),將其調大(我調了0.033,這樣相當於30fps的樣子會好一些)
參考:Unity游戲暫停之Update與FixedUpdate區別