首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当应用程序不在焦点或其他选项卡时,WaitForSeconds停止工作

当应用程序不在焦点或其他选项卡时,WaitForSeconds停止工作
EN

Stack Overflow用户
提问于 2017-10-12 01:26:56
回答 2查看 1.9K关注 0票数 2

我和团结一起做了WebGL游戏。并不是每个帧都需要计算,所以我把它们放在一个坐标线中。但是,当游戏处于背景状态时,协同系统的工作速度比正常情况下慢,并且等待额外的5-10秒。

例如,士兵向我跑来,我向他们发射子弹去杀人。当他们进入射程时,他们也开始开火。我检查了敌人是否在协同线的范围内。当我去浏览器上的其他选项卡时,一些敌人会比正常情况下更接近,而有些则会出现并通过游戏屏幕。这使得游戏不可玩。

是否有办法使协同工作正常,或者我需要把所有的计算更新方法?

示例代码是:

代码语言:javascript
复制
private IEnumerator ActionDeciderCoroutine()
{
    while (true)
    {
        DoAction();
        yield return new WaitForSeconds(Constants.ENEMY_THINKING_TIME);
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-12 14:34:07

Coroutine并没有表现得“奇怪”。WaitForSeconds的使用是问题所在,这就是为什么我更改了这个问题的标题。当您希望等待或计时器在WaitForSeconds没有焦点时或在另一个选项卡中时停止计数时,就会使用输出指令。如果使用WebGL,则当有焦点或返回到选项卡时,它将恢复。

相反的是WaitForSecondsRealtime,当您希望的等待或计时器继续使用时,通常使用,即使应用程序没有焦点,甚至在另一个选项卡中也是如此。它使用非缩放功能。在您的示例中,您需要使用WaitForSecondsRealtime产生指令。

代码语言:javascript
复制
private IEnumerator ActionDeciderCoroutine()
{
    while (true)
    {
        DoAction();
        yield return new WaitForSecondsRealtime(Constants.ENEMY_THINKING_TIME);
    }
}
票数 3
EN

Stack Overflow用户

发布于 2021-12-31 06:10:09

我遇到了这个问题,并通过在WebGL播放器设置、->解析和演示中启用“后台运行”来解决这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46699960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档