首页 > 解决方案 > unity:CountDownTimer 在到达 00:00:00 时停止

问题描述

所以我有这段代码,它基本上是一个倒数计时器,我的问题是我希望它在到达 00:00:00 时停止。

目前,当代码达到 00:00:00 时,秒数从 00:00:59 开始重新计算,所以我希望是否有人可以帮助我。

public class CountDownTimer : MonoBehaviour
 {
     public Text timerText;
     public float secondsCount;
     public int minuteCount;
     public int hourCount;
     void Update()
     {
         UpdateTimerUI();
     }
     //call this on update
     public void UpdateTimerUI()
     {
         //set timer UI
         if(secondsCount > 0)
         secondsCount -= Time.deltaTime;
         timerText.text = hourCount + "h:" + minuteCount + "m:" + (int)secondsCount + "s";
         if (secondsCount <= 0)
         {
             if(minuteCount > 0)
             minuteCount--;

             //if(minuteCount!= 0)
             secondsCount = 60;

         }

         else if (minuteCount <= 0)
         {
             if(hourCount > 0)
             hourCount--;

             if(hourCount != 0)
             minuteCount = 60;
         }

          if (secondsCount <= 0 && minuteCount <= 0 && hourCount <= 0)
         {
             Debug.Log("gameOver");
         }
     }
 }

标签: unity3duser-interfacetimercountdown

解决方案


我使用协程和TimeSpan(伪代码)重写了它:

private IEnumerator Countdown(int totalSeconds)
{
   while (totalSeconds > 0)
   {
     var time = TimeSpan.FromSeconds(totalSeconds);
     timerText.text = $"{time.Hours}:{time.Minutes}:{time.Seconds}";
     yield return new WaitForSeconds(1);
     totalSeconds--;
   }

   Debug.Log("Game over");
}

推荐阅读