这是一个用于演示 局部时间控制(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 状态、技能状态等)
- 在场景中创建实现了
ATCActor的角色(或使用已有示例) - 为角色挂载若干
TCableBase<T>子模块(例如:TransformCable) - 在场景中布置
TimeControlArea区域,设置为回溯或加速区域 - 当角色进入区域后,系统自动开始时间控制行为
- 主控与子控机制:可通过设置某个 TCable 模块为主控(如“是否活跃”),仅在主控有效时记录其他数据。
- 回溯优化:默认按 2x 或更高倍速采样,节省大量内存与写入。
- 可嵌入式设计:TVRingBuffer 无GC,固定内存结构,适合嵌入式环境或大并发场景。
本项目为内部演示用途,可自由修改和扩展。若需商业使用,请联系项目所有者。