Skip to content

TimerModule 计时器

TimerModule 提供一次性延迟和固定间隔重复回调。计时器返回带版本的 TimerHandle,业务通过句柄暂停、恢复或提前释放。

子功能

设计思路与生命周期

模块使用连续 TimerTask[] 保存活动任务,并通过 VersionIdController 分配 id/version。TimerHandle 只保存这两个整数:槽位被回收复用后,旧版本句柄不会误操作新任务。

新任务和待释放任务分别进入队列,在当前扫描结束后统一激活或回收,避免业务回调中创建/释放 Timer 改变正在遍历的数组。

OnInit 不依赖资源,直接完成初始化。OnClear 会清空全部任务、回调、句柄版本和待处理队列。

注意事项与限制

  • 创建者负责持有并释放 TimerHandle。窗口、实体、GameSystem 或 Part 退出时必须清理自己的重复 Timer。
  • interval/delay 不能小于 0,callback 不能为 null。
  • 不要在一次性回调已经自动完成后反复释放旧句柄;版本校验会拒绝它并可能记录警告。
  • useRealityTime 的实现是 unscaledDeltaTime,不是操作系统独立线程或高精度时钟。
  • Timer 回调在 Unity 主线程的 Module Update 中执行。
  • TimerModule 不捕获业务回调异常,异常会直接暴露;不要依赖异常后继续执行剩余业务。
  • 需要树状暂停、局部 TimeScale、Update/LateUpdate 阶段或按帧率更新时,使用 UpdateModule,而不是堆叠重复 Timer。

SuperCore 使用 MIT License 开源