Unity3d Unity:在达到00:00:00时停止倒计时

Unity3d Unity:在达到00:00:00时停止倒计时,unity3d,user-interface,timer,countdown,Unity3d,User Interface,Timer,Countdown,所以我有一个基本上是倒计时的代码,我的问题是我希望它在达到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;

所以我有一个基本上是倒计时的代码,我的问题是我希望它在达到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");
         }
     }
 }
公共类倒计时:单行为
{
公共文本timerText;
公开募捐;
公共分钟数;
公共国际会计;
无效更新()
{
updateTimeUI();
}
//请在更新时调用此
public void UpdateTimerUI()
{
//设置计时器用户界面
如果(第二次搜索>0)
secondsCount-=Time.deltaTime;
timerText.text=hourCount+“h:”+minuteCount+“m:”+(int)secondsCount+“s”;
如果(第二次搜索0)
分钟数--;
//如果(分钟数!=0)
第二个常数=60;
}
else if(分钟计数0)
小时计数--;
如果(小时计数!=0)
分钟数=60;
}

如果(SecondScont我使用协同程序和
TimeSpan
(伪代码)重写了它:


这是重置计时器的部分

 if (secondsCount <= 0)
     {
         if(minuteCount > 0)
         minuteCount--;

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

     }
或者你可以添加一个bool来记录你的时钟状态

bool timeIsOver = false;
然后在秒数到的时候触发它

if(timeIsOver == false){
secondsCount -= Time.deltaTime;
}
if(secondsCount <= 0  ){
   timeIsOver = true;
}
if(timeIsOver==false){
secondsCount-=Time.deltaTime;
}

如果(第二次搜索我找到了另一个答案,并认为它可能对任何路过的人都有帮助

public Text timerText;
 [SerializeField, Range(0, 59)] private int seconds;
 [SerializeField, Range(0, 59)] private int minutes;
 [SerializeField, Range(0, 23)] private int hours;
 private float timer;
 private void Start()
 {
     timer = hours * 3600f + minutes * 60 + seconds;
 }
 void Update()
 {
     UpdateTimerUI();
 }
 //call this on update
 public void UpdateTimerUI()
 {
     timer = Mathf.Max(timer - Time.deltaTime, 0);
     hours = Mathf.FloorToInt(timer / 3600);
     minutes = Mathf.FloorToInt((timer - hours * 3600) / 60);
     seconds = Mathf.FloorToInt(timer - hours * 3600 - minutes * 60);
     timerText.text = string.Format("{0:00}h:{1:00}m:{2:00}s", hours, minutes, seconds);
     if (timer <= Mathf.Epsilon)
     {
         Debug.Log("gameOver");
         enabled = false;
     }
 }
公共文本timerText;
[序列化字段,范围(0,59)]私有整数秒;
[序列化字段,范围(0,59)]私有整数分钟;
[序列化字段,范围(0,23)]专用整数小时;
专用浮点定时器;
私有void Start()
{
计时器=小时*3600f+分钟*60+秒;
}
无效更新()
{
updateTimeUI();
}
//请在更新时调用此
public void UpdateTimerUI()
{
timer=Mathf.Max(timer-Time.deltaTime,0);
小时数=数学楼层点(计时器/3600);
分钟=Mathf.FloorPoint((计时器-小时*3600)/60);
秒=Mathf.FloorPoint(计时器-小时*3600-分钟*60);
timerText.text=string.Format(“{0:00}h:{1:00}m:{2:00}s”,小时、分钟、秒);
中频(定时器)
bool timeIsOver = false;
if(timeIsOver == false){
secondsCount -= Time.deltaTime;
}
if(secondsCount <= 0  ){
   timeIsOver = true;
}
public Text timerText;
 [SerializeField, Range(0, 59)] private int seconds;
 [SerializeField, Range(0, 59)] private int minutes;
 [SerializeField, Range(0, 23)] private int hours;
 private float timer;
 private void Start()
 {
     timer = hours * 3600f + minutes * 60 + seconds;
 }
 void Update()
 {
     UpdateTimerUI();
 }
 //call this on update
 public void UpdateTimerUI()
 {
     timer = Mathf.Max(timer - Time.deltaTime, 0);
     hours = Mathf.FloorToInt(timer / 3600);
     minutes = Mathf.FloorToInt((timer - hours * 3600) / 60);
     seconds = Mathf.FloorToInt(timer - hours * 3600 - minutes * 60);
     timerText.text = string.Format("{0:00}h:{1:00}m:{2:00}s", hours, minutes, seconds);
     if (timer <= Mathf.Epsilon)
     {
         Debug.Log("gameOver");
         enabled = false;
     }
 }