Skip to content

A typesafe, lightweight messaging lib for Unity.

License

Notifications You must be signed in to change notification settings

olegkuzyk/signals

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 

Repository files navigation

Signals

A typesafe, lightweight messaging lib for Unity.


Inspired by StrangeIOC, minus the clutter. Originally based on CSharpMessenger. Converted to use strongly typed parameters and prevent use of strings as ids.

Special thanks to Max Knoblich for code review and Aswhin Sudhir for the anonymous function asserts suggestion.

Supports up to 3 parameters (more than that, and you should probably use a specialized VO as a single parameter). You can read about the reasons behind it on my blog.

Usage:

  1. Define your signal with up to 3 payload parameters, eg:
public class EndGameSignal : ASignal {}
public class ScoreSignal : ASignal<string, int> {}
  1. Add listeners on portions that should react, eg on Awake():
Signals.Get<ScoreSignal>().AddListener(OnScore);
  1. Dispatch, eg:
Signals.Get<ScoreSignal>().Dispatch(playerName, playerScore);
  1. Don't forget to remove the listeners upon destruction! Eg on OnDestroy():
Signals.Get<ScoreSignal>().RemoveListener(OnScore);
  1. You also have your local Signal Hub that is specific to a given object instead of using the global one. The syntax is exactly the same.
SignalHub playerSignals = new SignalHub();
playerSignals.Get<ScoreSignal>().Dispatch(playerName, playerScore);

Hit me up on twitter for any suggestions or questions.

About

A typesafe, lightweight messaging lib for Unity.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 100.0%