我和团结一起做了WebGL游戏。并不是每个帧都需要计算,所以我把它们放在一个坐标线中。但是,当游戏处于背景状态时,协同系统的工作速度比正常情况下慢,并且等待额外的5-10秒。
例如,士兵向我跑来,我向他们发射子弹去杀人。当他们进入射程时,他们也开始开火。我检查了敌人是否在协同线的范围内。当我去浏览器上的其他选项卡时,一些敌人会比正常情况下更接近,而有些则会出现并通过游戏屏幕。这使得游戏不可玩。
是否有办法使协同工作正常,或者我需要把所有的计算更新方法?
示例代码是:
private IEnumerator ActionDeciderCoroutine()
{
while (true)
{
DoAction();
yield return new WaitForSeconds(Constants.ENEMY_THINKING_TIME);
}
}发布于 2017-10-12 14:34:07
Coroutine并没有表现得“奇怪”。WaitForSeconds的使用是问题所在,这就是为什么我更改了这个问题的标题。当您希望等待或计时器在WaitForSeconds没有焦点时或在另一个选项卡中时停止计数时,就会使用输出指令。如果使用WebGL,则当有焦点或返回到选项卡时,它将恢复。
相反的是WaitForSecondsRealtime,当您希望的等待或计时器继续使用时,通常使用,即使应用程序没有焦点,甚至在另一个选项卡中也是如此。它使用非缩放功能。在您的示例中,您需要使用WaitForSecondsRealtime产生指令。
private IEnumerator ActionDeciderCoroutine()
{
while (true)
{
DoAction();
yield return new WaitForSecondsRealtime(Constants.ENEMY_THINKING_TIME);
}
}发布于 2021-12-31 06:10:09
我遇到了这个问题,并通过在WebGL播放器设置、->解析和演示中启用“后台运行”来解决这个问题。
https://stackoverflow.com/questions/46699960
复制相似问题