@AndrzejGieraltCreative

Thanks for watching! So, what do you think, will these techniques help you with your next game?
BTW, you can grab my free indie game start guide here: https://www.judicamegames.com/starterguideform

@SylvanFeanturi

You're technically not wrong, so I won't down vote the video, but you're fighting with windmills here.
Calling GetComponent is computationally faster, (likely by quite a lot, relatively), less abstract (which makes it easier to debug) and it's less typing, too. Plus the moment you try to do any sort of multitasking/threading, introducing delegates into call stack makes your life a lot harder.
In my opinion, it's cool that it's possible, but it's way overengineered.

@DreamDigital

The second example is not ideal I think. You should not fire an event to all enemies in the scene when a certain enemy deals damage. 
Because that will yield in great overhead when there is a lot of enemies "listeners" in the scene.
You should have some kind of communication established between the enemy and the player which you are completelly missing in your example. That communication might be established by certain range or certain action so it minimizes the amount of listening clients.
A potentially simpler solution would be to use an interface for example. IAttackable, IDamagable. Basically send event to all components which have a specific interface. You would ideally want to sent a message to a interface type and then the components them selves would be responsible to reacting to that specific message. So the EventSystem should be per individual enemy in this case. and each component of that specific enemy would listen to those events, which would be categorized by the component interface and thats it.

@humman007

But calling GetComponent<>() for an object of unknown type, you forgot to add safe !=null check ;) can be very flexible thanks to interfaces, for example any object with class implemented Hitable interface can react differently to a hit, and objects that don't implement or override Hit() method it will not react at all
Also performance is better because its only casting types, for thousands of checks in every frame this can make a difference

@idle.observer

Why you're not simply using Dependency Injection?

@bigchungus5065

Which medal is that on the necklace?

@JustFor-dq5wc

hmm.. IDK, this second pattern, however it's called, doesn't follow KISS principle. Bit chaotic, but nice video.

@eugenschabenberger5772

You allocate a new Class in every Update call?

@Andrium

I think this useful for multiplayer games or games with much npc