常用的三种计时器
帧计时
定义一个时间变量 timer,每帧将此时间减去帧间隔时间 Time.deltaTime,如果小于或者等于零,说明定时器到了,执行相应功能代码,将此定时器重置,代码如下:
public float timer = 10.0f;//计时时间
public float timeInterval = 5.0f;
void Update() {//update 或 fixupdate 是不断的循环执行的!
timer -= Time.deltaTime;//时间递减
if (timer <= 0) {//判断时间
Debug.Log(string.Format("时间:{0}", Time.time));
timer = 1.0f+timeInterval ;//时间间隔
}
}
协程时间
利用协程
在协程中返回需要等待的时间,直接看代码便明白:
// Use this for initialization
void Start() {//start unity进程树中只再开始执行一次
StartCoroutine(Timer());//StartCoroutine(“MyMethod”);
}
IEnumerator Timer() {
while (true) {
yield return new WaitForSeconds(1.0f);//延时时间
Debug.Log(string.Format("Timer2 is up !!! time=${0}", Time.time));
}
}
延时调用
使用 MonoBehaviour.Invoke,两个参数,分别是要调用的方法名和延时调用的时间。Thread.Sleep,自行搜索。
// Use this for initialization
void Start() {
//Invoke("函数名", 时间);
Invoke("Timer", 1.0f);//在应用程序的主线程上执行指定的委托
}
void Timer() {
Debug.Log(string.Format("Timer3 is up !!! time=${0}", Time.time));
Invoke("Timer", 1.0f);
}