Firing events
C# events allow you to essentially create a subscription system based on actions in your games or apps. For instance, if you wanted to send out an event whenever an item is collected or when a player presses the spacebar, you could do that. However, when an event fires, it doesn’t automatically have a subscriber or receiver to handle any code that needs to execute after the event action.
Any class can subscribe or unsubscribe to an event through the calling class the event is fired from; just like signing up to receive notifications on your phone when a new post is shared on Facebook, events form a kind of distributed-information superhighway for sharing actions and data across your application.
Declaring events is similar to declaring delegates in that an event has a specific method signature. We’ll use a delegate to specify the method signature we want the event to have, then create the event using the delegate type and the event keyword: