You need to enable JavaScript to run this app. Unity中如何实现可重置、点击触发且永久循环的计时器功能?
优惠活动
大模型
产品
解决方案
定价
更多

Unity中如何实现可重置、点击触发且永久循环的计时器功能?

计时器按钮逻辑实现方案

修改思路

  • 新增状态变量控制计时循环的启停,隔离普通按钮重置逻辑和exit按钮触发逻辑
  • 普通按钮点击时仅执行计时器归零+停止循环操作,不触发后续计数
  • exit按钮点击后启动循环状态,计时到80时自动归零,往复运行
  • 仅在循环状态处于运行中时执行计数逻辑,避免未触发就自动循环

完整实现代码

首先定义所需变量:

// 保留原有变量
float ttimer2 = 0;
bool flag2 = true;
// 新增循环控制变量,默认不启动循环
bool isCycleRunning = false;

给内置计时器的按钮绑定点击触发方法:

// 拖拽绑定到你的内置计时器按钮的点击事件上
public void OnTimerButtonClick()
{
    // 点击直接重置计时器为0,同时停止循环
    ttimer2 = 0;
    isCycleRunning = false;
    // 其他需要的重置逻辑可在此处添加
}

Update帧循环中编写exit按钮和计时逻辑:

private void Update()
{
    // 点击exit按钮时启动循环(如果需要按住exit才运行循环,可把GetButtonDown改为GetButton)
    if (CrossPlatformInputManager.GetButtonDown("exit"))
    {
        isCycleRunning = true;
    }

    // 仅循环启动时执行计数逻辑
    if (isCycleRunning)
    {
        if (ttimer2 < 80 && flag2)
        {
            ttimer2 += 1;
            UpDown = 2;
            Debug.Log(ttimer2);
            transform.Translate(Vector3.up * speed * Time.deltaTime);
            darkin.SetBool("play", false);
            darkengame.SetActive(true);
        }
        else
        {
            flag2 = true;
            Debug.Log(ttimer2);
            darkengame.SetActive(false);
            // 到达80后自动归零,继续循环
            ttimer2 = 0;
        }
    }
}

逻辑说明:你之前出现无需点击就自动循环的问题,是因为没有加循环状态控制,ttimer2 = 0的逻辑每帧都会执行,导致计数一直在0-80之间往复。现在通过isCycleRunning隔离后,只有点击exit后才会启动循环,点击计时器按钮会直接重置并停止循环,完全匹配需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 06:30:05