Unity3d Unity:在达到00:00:00时停止倒计时
所以我有一个基本上是倒计时的代码,我的问题是我希望它在达到00:00:00时停止 目前,当代码达到00:00:00时,秒从00:00:59开始重新计数,因此我希望有人能帮助我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;
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;
}
}