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

C#倒计时计时器失效问题:为何我的计时器无法正常工作?

问题分析与解决

你的代码核心问题有两个,直接导致程序无反应:

  1. do-while循环的致命逻辑错误:Update方法是游戏每帧都会调用的函数,你写的do { timer--; } while (timer > 0);会在单帧内一次性把timer从10减到-1,循环结束后timer已经是-1,根本触发不了后面if (timer == 0)的判断。而且之后每帧都会执行这个循环,timer会一直往负数走,永远满足不了等于0的条件。
  2. 可能的位置同步缺失:就算你把timer直接设为0触发了object1X--;,如果没有把object1X的值同步到物体的实际位置(比如transform.position = new Vector3(object1X, transform.position.y, transform.position.z);),物体也不会有移动表现。

修正后的代码示例

帧计数计时(每帧减1,10帧后移动)

private int timer = 10;

void Update()
{
    if (timer > 0)
    {
        timer--;
    }
    else if (timer == 0)
    {
        object1X--;
        // 将变量同步到物体实际位置,根据你的场景调整参数
        transform.position = new Vector3(object1X, transform.position.y, transform.position.z);
        // 设为-1避免每帧重复触发移动
        timer = -1;
    }
}

真实时间计时(10秒后移动,更符合常规需求)

private float timer = 10f;

void Update()
{
    timer -= Time.deltaTime;
    if (timer <= 0f)
    {
        object1X--;
        transform.position = new Vector3(object1X, transform.position.y, transform.position.z);
        // 关闭当前脚本的Update逻辑,避免重复执行
        enabled = false;
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 01:57:08