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
相关产品推荐
相关产品推荐

