View on Asset Store (opens in new tab)
Package details
- Latest version
- 1.1.0
- Last updated
- First released
- Unity version
- 6000.3.17 or later
- Package size
- 325 KB
- Files
- 139
- Favorites
- 3
- Views in the past week
- 10
Price tracking
- Last checked
- Tracked since
- Lowest recorded
- $15.00 on
Keywords
Messenger - Type-Safe Event System for Unity
Type-safe event system for Unity with ScriptableObject channels, DI-ready architecture, and high-performance dispatch.
Affiliate link · Purchases support this site
Price history
Last 6 months
USDAsset preview
1 / 9
Messenger - Type-Safe Event System for Unity screenshot 1
About this asset
Stop coupling unrelated systems with direct references, static globals, or fragile string-based events!
Messenger gives you three things at once that are usually a trade-off: full compile-time type safety, near-zero allocation dispatch, and Inspector-friendly ScriptableObject channels. Refactor a message and the compiler finds every sender and listener. Fire thousands of events per frame without feeding the garbage collector.
Messenger is a code-first, type-safe publish-subscribe event system for Unity that helps you decouple gameplay, UI, audio, analytics, meta, and service systems without string keys, enum registries, or hard references.
Use Messenger as a local event system in pure C#, inject it through your composition root, or share ScriptableObject Channel assets across prefabs and scenes when you want Inspector-friendly communication without singletons or global state.
Why not plain C# events or a static event system?
- C# event fields recreate the tight coupling you are trying to remove and are easy to leak
- Static event systems and string or enum keys break silently on rename and have no compile-time safety
- Heavier reactive frameworks add a large dependency and a learning curve for what is often just messaging
Messenger stays small and focused: one clear publish-subscribe API, strong typing, measured performance, and no external dependencies.
Why choose Messenger:
- Strongly typed messages for safer refactoring and cleaner APIs
- No string keys or enum registries to maintain
- Explicit Send(in T) and Signal<T>() flows for payload messages and no-data signals
- High-performance, low-allocation dispatch with cached signals and benchmarked runtime behavior
- Fluent subscriptions with a single IDisposable for lifecycle cleanup
- ScriptableObject Channels for cross-scene and cross-prefab messaging
- Optional logging, exception handling, thread safety, capacity tuning, and custom cache support
- DI-friendly IMessenger interface with examples for Zenject, VContainer, Reflex, and pure DI
- Re-entrancy-safe dispatch with deferred subscribe/unsubscribe during message processing
Extensive documentation, 4 sample scenes, 481 tests, benchmarks, and zero external dependencies
Messenger is built for teams that want clean, scalable architecture without heavyweight frameworks: from small projects that need cleaner communication to larger codebases that need predictable behavior, low overhead, and easier testing.
Want to see it first? Import any of the 4 included demo scenes from the Package Manager and press Play - basic usage, ScriptableObject channels, the fluent API, and multi-threaded workers each run out of the box.
From the publisher's Asset Store listing.
Technical details
Core components:
- Messenger (runtime event system)
- Channel (ScriptableObject-based shared messaging)
- Builder configuration API
- IMessenger / ISubscriber<T>
- ILogger / ICache extensibility points
Main capabilities:
- Strongly typed publish-subscribe API with no string keys or enum registries
- Send(in T) for payload messages and Signal<T>() for cached no-data signals
- Fluent multi-subscription API returning a single IDisposable
- Optional logging, exception handling, thread safety, capacity tuning, auto-release capacity, and custom cache support
- Re-entrancy-safe dispatch with deferred subscribe/unsubscribe during active message processing
- Deterministic subscription order
- DI examples for Zenject, VContainer, Reflex, and pure C# composition
Included content:
- 4 sample scenes
- Benchmarks and stress tests
- 481 unit tests across 51 test fixtures
- Full documentation
Benchmark snapshot (Apple Silicon, Unity 6.3, Mono runtime):
- Zero GC: dedicated Send/Signal dispatch tests observed 0 garbage collections over 10,000 iterations
- Send: ~4.3M ops/sec with 10 subscribers
- Signal: ~3.2M ops/sec with 10 subscribers
Supported platforms:
- Windows
- macOS
- Linux
- Android
- iOS
- WebGL
Important behavior notes:
- Message dispatch is exact-type by design, interface/base-type dispatch requires explicit generic typing
- Signal<T>() is intended for no-data/default-constructible message types
- Channel uses an internal default Messenger configuration
Compatibility
| Unity version | Built-in | URP | HDRP | Custom |
|---|---|---|---|---|
| 6000.3.17f1 | Compatible | Compatible | Compatible | Compatible |
As listed on the Asset Store.