December 17, 2019
Unity Event Systems
Basics, Setup, and Tutorials
ADDENDUM: An EVEN MORE AWESOME Event System, by viewers!
By: quill18creates
C# Events
By: Jonathan Weinberger {ON Unity Learn Premium}
Tutorial 1
They created a public abstract class, Event
Inheritance and Static Fields in C#
This was an interesting interaction that I did not know it worked this way. When a base class in C# contains a static field, and then you create a new class that inherits from this class, it actually creates its own separate and unique version of that static field (as opposed to their just being one overall static field contained in the base class for all classes that inherit it). This has pros and cons. The pros are that it is helpful when you want the derived classes to be able to hold data only amongst themselves. The cons are obviously that you will have to do something a bit extra if you want something to contain all the information from all derived classes from that original base class.
Tutorial 2
This is just a very basic intro to events in C# I found on Unity Learn premium. This was beneficial to just cover some basic rules of events in general again.
General Events Notes
- allow us to create broadcast system so other objects can subscribe/unsubscribe
- need delegate type
- will cause an error if it’s null when called
- helps classes be self contained (since they do not rely on communication directly with another object)
- every instance of an object that wants to be subscribed to the event must make sure that it itself subscribes
- have inherent security (as opposed to delegates)
- General Rule: always have an unsubscribe for every subscribe
Final Notes
Unity Learn actually has a ton of information, tutorials, and practice for learning about events, so I will most likely look to follow some of them in the future. They range from a few more really basic ones such as the one I just checked out, to more challenging ones, and even advanced ones that are much more project based as well. I really think this type of system will be useful for my current personal project, so I want to understand it well in an effort to properly utilize it.