?1、实现Game界面倒计时:使用Text制作倒计时预制件,从02:00开始,最后10s字体变红色,00:00停止
方法一:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; //注意使用该命名空间,Text才可以显示
///<summary>
///倒计时02:00
///<summary>
public class CountdownTimer : MonoBehaviour
{
//*************实例:使用Text制作倒计时预制件,从02:00开始,最后10s字体变红色,00:00停止**********
//1.查找组件引用
//2.定义变量:秒seconds
//120—>02:00 119—>01:59
//4.修改文本
//5.如何每秒修改一次
private Text textTimer;
public int second = 120;
//在Start或者Awake中查找组件
private void Start()
{
textTimer = this.GetComponent<Text>();
}
private float nextTime=1;
private void Update()
{
if (Time.time>nextTime)
{
second--;
textTimer.text= string.Format("{0:d2}:{1:d2}", second / 60, second % 60);//{0:d2}:{1:d2}使得数字以两位数字显示
//设置下次修改时间
nextTime = Time.time + 1;
if (second<=10)
{
textTimer.color = Color.red;
}
}
}
//重点:在Update每帧执行的方法中,个别语句实现指定间隔执行一次。
}
方法二:
private float totalTime;
private void Update()
{
Timer();
}
private void Timer()
{
//累加每帧间隔
totalTime+=Time.deltaTime;
if (totalTime>=1)
{
second--;
textTimer.text = string.Format("{0:d2}:{1:d2}", second / 60, second % 60);//{0:d2}:{1:d2}使得数字以两位数字显示
totalTime = 0;
}
}
方法三:
private void Start()
{
textTimer = this.GetComponent<Text>();
//重复调用(方法名称,第一次执行时间,每次执行间隔时间) 每个固定时间重复执行
InvokeRepeating("Timer3",1,1);
}
private void Timer3()
{
second--;
textTimer.text = string.Format("{0:d2}:{1:d2}", second / 60, second % 60);
if (second<=0)
{
//取消调用,使得方法停止执行,时间停止
CancelInvoke("Timer3");
}
}
|