Custom Tick System


Custom Tick System is a high-performance, tick manager designed for projects that require precise and scalable time-based logic execution without relying on Update() methods or coroutines.


by Energise


Price History +

Allows you to register methods or actions to be called at custom intervals, with optional delays, one-shot execution, and pause/resume control. Ticks can be assigned via attributes or registered programmatically using a builder API. This system replaces scattered timing logic with a centralized, deterministic tick loop.


Key Features

  • Custom tick intervals per function or action
  • Zero hot-path GC allocations for every registered tick
  • Attribute-based or builder-style registration
  • Optional delays, one-shots, pause and resume
  • Centralized ticking via Unity’s PlayerLoop (no GameObjects required)
  • Runtime-safe, editor-only debugging tools included
  • Fully documented and unit-tested


Benefits

  • Performance Optimized: Runs without generating garbage each frame, making it ideal for mobile, VR, and high-frequency logic such as AI, damage-over-time, background logic, or event dispatching.
  • Cleaner Architecture: Avoids bloating MonoBehaviour with Update() methods. Keeps tick logic encapsulated and modular.
  • Flexible Timing Control: Set custom intervals, start delays, and one-shot execution for precise scheduling of any logic.
  • Central Debugging: Includes an editor window to inspect, pause, resume, and unregister ticks during playmode.
  • Scales Easily: Supports thousands of concurrent ticks without frame drops or memory churn.


Use Cases

  • Periodic AI decisions or sensory checks
  • Damage-over-time and timed effects
  • Background data polling or syncing
  • Cooldowns and scheduled actions
  • Procedural generation steps
  • Lightweight job scheduling in gameplay systems


Whether you're building a real-time strategy game, action RPG, simulation, or any system with repeating logic, offering a fast, GC-safe, and easy-to-maintain alternative to traditional update loops or coroutine-based ticking.