首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >统一- Coroutine在Android中的工作方式不同。

统一- Coroutine在Android中的工作方式不同。
EN

Stack Overflow用户
提问于 2022-02-19 15:22:27
回答 1查看 367关注 0票数 0

我有一个协同线,它在一定的时间间隔内执行代码。出于某种原因,当我在Unity中运行它时,它会正确地计算时间,但是当我在android上运行相同的代码时,coroutine就会开始计算时间慢2-3倍。我没有任何检查什么操作系统。有什么问题吗?

代码:

代码语言:javascript
运行
复制
IEnumerator StraveTimer()
{
    while (straveTime < maxStraveTime)
    {
        yield return new WaitForSeconds(0.003f);
        straveTime += 0.01f;
    }
    StopCoroutine("StraveTimer");
    straveTime = 0;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-19 21:12:27

一般a

代码语言:javascript
运行
复制
yield return new WaitForSeconds(0.003f);` 

一点道理都没有!我非常怀疑你的应用程序在你的手机上每秒运行300+帧。因此,无论哪种方式,您至少要等待一帧--这可能比预期的要长,“正常”帧速率为60 fps --一帧大约需要0.017秒--您也可以使用

代码语言:javascript
运行
复制
yield return null;

然后,产生的主要问题是,通过每个帧的0.01来增加依赖于您的值框架。

此外,这里不需要使用StopCoroutine

你的例行公事可能只是

代码语言:javascript
运行
复制
IEnumerator StraveTimer()
{
    while (straveTime < maxStraveTime)
    {
        yield return null;
        straveTime += INCREASE_PER_SECOND * Time.deltaTime;
    }
 
    straveTime = 0;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71186343

复制
相关文章

相似问题

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