查看: 1432|回复: 1
打印 上一主题 下一主题

[其他] 在Unity中使用Timer类来计时

[复制链接]
may    

8830

主题

81

听众

7万

积分

首席设计师

Rank: 8Rank: 8

纳金币
52336
精华
343

最佳新人 热心会员 灌水之王 活跃会员 突出贡献 荣誉管理 论坛元老

跳转到指定楼层
楼主
发表于 2019-7-29 23:39:37 |只看该作者 |倒序浏览
  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. }
复制代码
來自:实践者
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏1 支持支持0 反对反对0
回复

使用道具 举报

5

主题

7

听众

2429

积分

中级设计师

Rank: 5Rank: 5

纳金币
149
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2019-7-30 10:24:45 |只看该作者
先指出个注释错误: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的协程,虽然时间上会有误差,但是其实不大。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-13 11:31 , Processed in 0.080120 second(s), 28 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部