我有一个协同线,它在一定的时间间隔内执行代码。出于某种原因,当我在Unity中运行它时,它会正确地计算时间,但是当我在android上运行相同的代码时,coroutine就会开始计算时间慢2-3倍。我没有任何检查什么操作系统。有什么问题吗?
代码:
IEnumerator StraveTimer()
{
while (straveTime < maxStraveTime)
{
yield return new WaitForSeconds(0.003f);
straveTime += 0.01f;
}
StopCoroutine("StraveTimer");
straveTime = 0;
}
发布于 2022-02-19 21:12:27
一般a
yield return new WaitForSeconds(0.003f);`
一点道理都没有!我非常怀疑你的应用程序在你的手机上每秒运行300+帧。因此,无论哪种方式,您至少要等待一帧--这可能比预期的要长,“正常”帧速率为60 fps --一帧大约需要0.017
秒--您也可以使用
yield return null;
然后,产生的主要问题是,通过每个帧的0.01
来增加依赖于您的值框架。
此外,这里不需要使用StopCoroutine
。
你的例行公事可能只是
IEnumerator StraveTimer()
{
while (straveTime < maxStraveTime)
{
yield return null;
straveTime += INCREASE_PER_SECOND * Time.deltaTime;
}
straveTime = 0;
}
https://stackoverflow.com/questions/71186343
复制相似问题