使用Time类实现简单倒计时的三种方法:
我将显示内容放在了一个Text控件上显示
private Text txtTimer;
private void Start()
{
txtTimer = this.GetComponent<Text>();
}
1:第一种方法(使用time计时判断)↓
public int second = 120;
private float nextTime = 1;
private void Update()
{
time1();
}
private void time1()
{
if (Time.time>nextTime)
{
second--;
txtTimer.text=string.Format("{0:d2}:{1:d2}", second / 60, second % 60);
nextTime = Time.time + 1;
}
}
2:第二种方法(使用deltaTime累加判断)↓
public int second = 120;
private float deltaTime;
private void Update()
{
time2();
}
private void time2()
{
deltaTime+=Time.deltaTime;
if (deltaTime>=1)
{
second--;
txtTimer.text=string.Format("{0:d2}:{1:d2}", second / 60, second % 60);
deltaTime = 0;
}
}
3:第三种方法(InvokeRepeating)↓
public int second = 120;
private void Start()
{
//重复调用(执行方法,第一次执行时间,每次执行间隔)
InvokeRepeating("time",1,1);
}
private void time()
{
second--;
txtTimer.text=string.Format("{0:d2}:{1:d2}", second / 60, second % 60);
if (second<=0)
{
//停止调用
CancelInvoke("time");
}
}
*尽管三种方法都能实现倒计时,但使用的情况还是有所区别的:
方法三 用于简单的 固定时间的 重复执行
方法一方法二:一个是先执行后累加,一个是先累加后执行。在逐帧调用的情况下,要区别情况使用。
比如 枪械射击 按下你就得马上把子弹发射出去 再判断结果(方法一)
人物放技能 技能cd到了你才能使用 不能马上就放技能(方法二)