自己造轮子: Unity打造Timer定时器框架

1: 为什么我们要自己造轮子来做定时器系统

传统的Unity做定时器的方式有三种,总结如下:

(1) 在组件类里面定义一个变量,每次Update的时候,累积时间,当时间到达特定的阈值时, 触发函数调用。

源码素材视频教程可以进入学习交流小组领取

          void Update() {
                             float dt = Time.deltaTime;
                             this.passedTime += dt;
                             if(this.passedTime >= 阈值) {
                                      doSomeThing();
                                      this.passedTime -= 阈值;
                             }
                   }

(2) 使用协程,来做定时器等待。

              yeild return new WaitForSecond(5.0f);
              // 5秒后做相关的事情
              doSomeThing();

(3) 组件类MonoBehaviour 接口 Invoke,来做定时器 this.Invoke("doSomeThing", 5);

上面三种方法都有自己的缺点,第(1)(2)种使用起来不方便, 第(3)种节点隐藏后不方便触发,不方便掉其他代码里面的回调函数,不方便传递参数。

所以我们在项目里面决定自己造轮子,来打造一个Timer模块,处理游戏种的各种定时器需求。

2: 定时器系统的核心原理是什么?

每个定时器对象是一个Timer, 添加的时候交给定时器管理系统, 定时器系统负责管理所有的定时器对象,每次游戏Update的时候,遍历里面的每个定时器对象,

把它们过去的时间增加Time.deltaTime, 当过去的时间达到定时器触发时间的时候,触发定时器

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值