unity计时器可以使用unity api提供的InvokeRepeating方法
这里使用C#的多线程与委托来实现
LoopTime是每隔time毫秒调用一下callback方法,共调用count次
Loop是每隔time毫秒调用一下callback方法 一直调用,要停止调用需要用返回的Thread.Abort()方法终止线程
代码如下:
using System; using System.Threading; /// <summary> /// 多线程实现计时器 /// </summary> public class TimerManager { /// <summary> /// 计时器,time是每隔time毫秒执行一次,执行了count次,每次执行一次callback /// </summary> /// <param name="time"></param> /// <param name="count"></param> /// <param name="callback"></param> public static void LoopTime(int time,int count,Action callback) { Thread t = new Thread(delegate(){ for (int i = 0; i < count; i++) { Thread.Sleep(time); callback(); } }); t.Start(); } /// <summary> /// 每隔time毫秒执行一次callback /// </summary> /// <param name="time"></param> /// <param name="callback"></param> /// <returns></returns> public static Thread Loop(int time,Action callback) { Thread thread = new Thread(delegate () { while (true) { Thread.Sleep(time); callback(); } }); thread.Start(); return thread; } } 使用方法:
class Test{
void Start(){
TimerManager.LoopTime(1000, 10, Print);//每隔1000ms调用一次Print 调用10次
}
void Print(){
Debug.Log("Test----->Print")
}
}
