You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity安卓端协程运行缓慢 Cookie点击器游戏数值更新异常问题

问题根源

你当前的实现逻辑存在核心错误,安卓端运行速度慢本质是和帧率绑定导致的:

  • 你将StartCoroutine(Rps())放在了Update生命周期中,每帧都会启动一个全新的协程,最终每秒累加的饼干总数完全等于每秒运行的协程数量,PC端帧率高、启动协程多,所以速度正常,安卓端帧率低、启动协程少,自然累加变慢。
  • 协程内WaitForSeconds(Time.deltaTime * 0.1f)的写法完全不可控,Time.deltaTime是上一帧的时长,每帧数值都不固定,无法实现稳定的等待间隔。

最优解决方案(推荐)

直接在Update中按时间增量计算饼干产量,完全和帧率解绑,安卓和PC端运行效果100%一致,且支持每帧更新视觉表现,符合你要的快速更新效果:

  1. 先在你的Stats类中新增一个浮点型累计变量,用来存未取整的饼干数:
// 加入Stats类中
public static float CookiesTotalAccumulate;
  1. 修改Update逻辑,删掉每帧启动协程的代码:
private void Update()
{
    // 按当前帧的时间增量累加对应比例的饼干产量
    Stats.CookiesTotalAccumulate += Stats.cookiesPerSecond * Time.deltaTime;
    // 取整赋值给总计数,保证显示的是整数
    Stats.CookiesTotal = Mathf.FloorToInt(Stats.CookiesTotalAccumulate);

    openSlot(price1text, price1, slot1);
    openSlot(price2text, price2, slot2);
    openSlot(price3text, price3, slot3);
}

备选方案(协程实现)

如果一定要用协程实现,只需要在Start中启动一次协程即可,不要放在Update中重复启动:

private void Start()
{
    StartCoroutine(Rps());
}

IEnumerator Rps()
{
    // 循环执行累加,固定每0.1秒更新一次
    while(true)
    {
        Stats.CookiesTotal += Stats.cookiesPerSecond * 0.1f;
        yield return new WaitForSeconds(0.1f);
    }
}

补充说明

你之前把等待时长改为1秒时表现正常属于巧合:1秒的等待时间远大于帧间隔,不管帧率高低,每秒每个协程只会执行1次累加,大量协程的累加量刚好凑到了预期的每秒产量,但逻辑本身仍然是错误的,设备帧率波动时依旧会出现数值异常。

内容的提问来源于stack exchange,提问作者Flacuchentxox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 14:24:01