Signals is a universal messaging system specifically designed for Unity that uses data streams to send ‘pings’, data structures and/or references. Performance and memory allocations are some of the most important characteristics of a messaging system, which is the reason why Signals has an internal automated pooling system that recycles data packets after they are used. This architecture provides the optimum design for scalability and reliability making the system robust and adaptable to various use-cases.
Streams are virtual channels through which Signals are being sent. They handle Signal delivery to all registered listeners. A stream can transmit any signal (ping) or meta-signal (a signal with a data or a reference payload) to its listeners. Streams can be pre-configured or created at runtime. Any component or class can subscribe to a stream in order to receive its live signals, and a signal can be sent from anywhere through any stream.
Debugging Signals is made easy with the help of live runtime consoles (Streams Console and Signals Console). These Unity editor windows allow for real-time visualization of all the live streams created at runtime and of all the signals as they are being sent. A dynamic filters sub-system is also available to help focus on specific signals.
Signals has a clean API that makes sending a signal as easy as writing one line of code. Connecting and disconnecting from streams is also easy as both operations are one liners. Complex implementations are also available as the system provides custom interfaces to interact with it.