纳金网

标题: 在Unity中使用Timer类来计时 [打印本页]

作者: may    时间: 2019-7-29 23:39
标题: 在Unity中使用Timer类来计时
  1. using System.Timers;
  2. using UnityEngine;

  3. public class test : MonoBehaviour
  4. {
  5.     private float fltTime = 0;
  6.     System.Timers.Timer t;
  7.     void Start()
  8.     {
  9.         //定时器
  10.         t = new Timer(1000);//实例化Timer类,设置间隔时间为3000毫秒
  11.         t.Elapsed += new ElapsedEventHandler(Timing);//到达时间的时候执行事件
  12.         t.AutoReset = true;//设置是执行一次(false)还是一直执行(true)
  13.         t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件

  14.     }

  15.     void Timing(object sender, ElapsedEventArgs e)
  16.     {
  17.         fltTime++;
  18.         Debug.Log(fltTime);
  19.     }

  20.     private void OnApplicationQuit()
  21.     {
  22.         t.Close();
  23.     }
  24. }
复制代码
來自:实践者
作者: 745951224    时间: 2019-7-30 10:24
先指出个注释错误:new Timer(1000) 指的是1000毫秒间隔,而不是3000毫秒
另外Timer类说明详情可见微软官方文档:https://docs.microsoft.com/zh-cn/dotnet/api/system.timers.timer.site?view=netframework-4.8#System_Timers_Timer_Site

然后说下用途方面吧
1、首先当然是在Unity的应用上,System.Timers.Timer属于线程安全的多线程类,简单点说就是它无法去执行Unity API。Unity API只能运行在主线程上。当然,Debug.Log啥的就不说了。
2、因为不是Unity的原生API,所以在平台部署上可能会费点劲,需要注意

呐,建议还是直接使用Unity的协程,虽然时间上会有误差,但是其实不大。




欢迎光临 纳金网 (http://wwww.narkii.com/club/) Powered by Discuz! X2.5