Skip to content

zhaogd233/TimeControl

Repository files navigation

Time Control Actor Demo

这是一个用于演示 局部时间控制(Time Control) 的 Unity Demo 项目,支持 局部加速局部回溯(减速/倒带) 功能,适用于大世界、多人交互、复杂状态同步等场景。

✨ 核心特性

  • ✅ 支持每个角色或对象独立控制时间
  • 🔄 可进行局部回溯(倒放指定时间段内的状态)
  • ⏩ 可进行局部加速播放(快放特定区域中的角色)
  • 💾 使用高效的环形缓冲区 + 位图压缩结构记录状态变化
  • 🧩 支持自定义的状态追踪模块(如 Transform、粒子系统、动画等)
  • ⚡️ 低GC、低延迟、适合移动设备或大规模实体场景

🧱 项目结构

TVA/
├── ATCActor.cs             # 支持时间控制的角色基类(Actor)
├── ITCable.cs              # 可被时间控制的子模块接口(Time Cable)
├── TCableBase.cs           # 泛型时间记录模块(支持自定义类型)
├── TVRingBuffer.cs         # 支持压缩回溯的环形缓冲记录器
├── ParticleCable.cs        # 示例:粒子系统控制模块
├── TransformCable.cs       # 示例:Transform(位置/旋转/缩放)控制模块
├── IAreaEntityListener.cs      # 时间控制listener(进入区域的 Actor)

📦 示例功能

  • 进入某区域时,对应的 ATCActor 会收到通知:

    • 如果是回溯区:对象倒退一定时间内的状态(支持逐帧插值)
    • 如果是加速区:对象加快播放其行为逻辑(如动画、移动等)
  • 所有状态通过 TVRingBuffer<T> 记录,仅在状态变化时写入,提升性能。

  • 状态变更用 bitmask 标记,避免不必要的数据回溯。

  • 状态记录支持浮点误差容忍、自定义比较器。


🧪 支持的数据类型(可扩展)

以下为已有的时间控制模块,可按需继承 TCableBase<T> 扩展更多模块:

  • Transform 数据(位置 / 旋转 / 缩放)
  • 粒子系统播放状态
  • 动画播放状态(可配合 clipName + 时间)
  • 自定义结构体(如 Buff 状态、技能状态等)

🚀 使用方法

  1. 在场景中创建实现了 ATCActor 的角色(或使用已有示例)
  2. 为角色挂载若干 TCableBase<T> 子模块(例如:TransformCable)
  3. 在场景中布置 TimeControlArea 区域,设置为回溯或加速区域
  4. 当角色进入区域后,系统自动开始时间控制行为

💡 开发建议

  • 主控与子控机制:可通过设置某个 TCable 模块为主控(如“是否活跃”),仅在主控有效时记录其他数据。
  • 回溯优化:默认按 2x 或更高倍速采样,节省大量内存与写入。
  • 可嵌入式设计:TVRingBuffer 无GC,固定内存结构,适合嵌入式环境或大并发场景。

📸 截图预览


📄 许可协议

本项目为内部演示用途,可自由修改和扩展。若需商业使用,请联系项目所有者。



About

可任意对局部加速&回溯的unity项目

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages