unity客户端框架 利用多线程实现计时器

tech2026-04-23  3

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")

}

}

最新回复(0)