🌍 FREE C# Beginner Complete Course! th-cam.com/video/pReR6Z9rK-o/w-d-xo.html 🔴 Watch my Complete FREE Game Dev Course! 🌍 th-cam.com/video/AmGSEH7QcDg/w-d-xo.html 📝 C# Basics to Advanced Playlist th-cam.com/play/PLzDRvYVwl53t2GGC4rV_AmH7vSvSqjVmz.html 🌐 Have you found the videos Helpful and Valuable? ❤️ Get my Courses unitycodemonkey.com/courses or my Steam Games 🎮 unitycodemonkey.com/gamebundle Here's the highly requested C# Events video! This is one of the most important things to know about C# in order to keep your code nice and clean. 🎮 Play 7 Awesome Games (Action, Strategy, Management) and Help Support the Channel! ✅ Get the Game Bundle 67% off unitycodemonkey.com/gameBundle.php
Hey, Love your videos! I was wondering could you someday make a complete C# course? You're one of the few people online who use a consistent coding "style" which makes everything easy to follow. I'd love to see an in depth C# series made by you.
I have a question: As per my understanding of the unity engine, whatever happens in the 'update' function is executed every frame, then how does the Debug.log print "Space!" Whenever OnSpacePressed is invoked Even though the Debug.log doesn't stay in the update() !?
Important: when using most (if not all) of the events described in the video is very important to unsubscribe from them when the listener is destroyed, since this could result in errors when calling events with dead listeners. A video on delegates would be awesome. You could also talk about the differences between Strong and Weak references.
Wagner Ferreira good point and for anyone who doesn’t know one good place to do that in Unity is creating a void OnDestroy() and put all of the unsubs in there
@@judgegroovyman I've also seen that a good practice is to put the unsubs in OnDisable() as calling an event with disabled listeners may also lead to errors. If I'm not wrong, when an object is destroyed OnDisable() is called too.
The GC removes the object that was listening to the event, but not the registered listener itself, so when the event is fired the listener will be pointing to an invalid reference and throws an error. This is where using weak references is useful, but it is usually heavier since the event handler must check every listener for nulls before firing any events.
@@WagnerGFX And if you have multiple subscribers with multicastdelegates it can get even more grumping especially if someone decides to use an `async void` handler. Also when the GC does a mark and sweep if you aren't using a weak reference it will keep the subscriber event after all other objects are dereferenced leaving you with a resource leaks. There are really a lot of issues with the fundamentals of the events in .Net. It would be better if people used different patterns for decoupling.
The code shown at 10:14 should not allow "Space! 2" to "Space! 5" to show in the console at 10:23 as he is unsubscribing from the event as soon as he fires it. Just wanted to clarify in case anyone else gets stuck wondering how he was able to fire off the event multiple times, I believe it was an editing error. If you remove the unsubscribe it will work as he is showing.
public class ForestManager { public event EventHandler OnTreeFall; private void Update() { if (Input.GetTreeDown(TreeCode.Timbeeeeerrr)) { OnTreeFall?.Invoke(this, EventArgs.WatchOut); } } } public class ForestHikerAndPartTimePhilosopher { private bool isOutOnAHike; private void Start() { ForestManager universePhysics = FindManager(); universePhysics.OnTreeFall += TheUltimateQuestionAboutReality; } private void TheUltimateQuestionAboutReality(object physics, EventArgs e) { if (isOutOnAHike) { Debug.Log("A tree fell in the forest and a hiker is there, so he could hear the tree fall."); } else { Debug.Log("A tree fell in the forest, but the hiker was not there, so he couldn't hear the tree fall. Did it make a sound?"); } } }
I love these nuts and bolts tutorials you're now doing (in addition to everything else you do lol). You're such an excellent and thorough teacher. Your examples are so concrete and easy to follow.
Damn.. I nearly searched the whole web on events/delegates, but your tutorial was the only one which made it clear for me! Awesome explanation and practical use cases. You got a new subscriber =D
I've said it once but I'll say it again... THANK YOU! I'm a professional dev but new to game development, and these are the magic tutorials I have been looking for. I absolutely love your approach to teaching and your commitment to proper design. Thanks for the utils as well! I subscribed on Patreon and am excited to follow all the amazing content you put out. Seriously, absolutely amazing tutorials. I've shared with all my friends! :)
Thank you so much for these tutorials! The way you start with basic examples and then gradually layer up the additional functionality has really helped my understanding of the underlying concepts (and meant that I can apply the learning confidently!).
Events are simple and powerful! Thank you again for teaching the concept here and in your "Turn Based Strategy" course! It was way more than what I paid, and I learned so much while having fun!
I was doing the unity KitchenChaos Course and came here for a little more help because I felt like I couldn't do this on scratch from my own. But after this video I feel like I completely grasp it and create an event system from scratch, so I can move on! Thank you for your videos!
Same. I stopped at this point and came here for more clarification before I move on with the course! Sadly I am still struggling to grasp the concept :3
This is awesome - I remember Unreal Engine having something similar ( back in UT99 ) - this is way more efficient than having scripts reference / check public variables / functions in other scripts. Bonus points for the new C# 6 null-conditional operator - that's super useful too. :)
Thats gold, growing more interest every day on your channel! I was using a custom messaging system that i've learned to code in a very old unity book, probably from before event's support arrive in unity. It is basically a much more complex way to do what you do with events. I tried the unity courses on this before but your explanation is just clean and easy to understand. Adapting my projects now. Thanks!
I'm guessing you were using SendMessage(); which is one possible approach but it's not very good since it's very much based on strings which can easily break your code and causes terrible performance.
Ever since I saw you using C# events a while back instead of UnityEvents, I decided to look into c# events. Now I have decided that's what I'm gonna use for now on. And yea you should definitely do a tutorial on all that function variable goodness. You should talk about: * delegates * Func, Action, Predicate premade delegates * and how they can be used in a bunch of different ways like passing functions as parameters to another function. And also the idea of callbacks. * Lambda functions * Local Functions (these are actually kinda cool, idk if you ever used them but they are a nice alternative to lambda functions) A really good example I know of for demonstrating Function variables would be the "Calculus Summation Function". Where you have to pass it 3 values: starting integer, summation size, and a function to apply the summation to. And the user can pass in any function they want like f(x) = x^2 and the summation would be like 1^2 + 2^2 + 3^2 + ... + n^2
Thank you codemonkey, couldn't remember how to relay some structured objects as eventarguments and remembered it through your video! Coming in very handy in the project I'm currently working on.
Man, watching this video made me realize I need some actual basic coding lessons, as it was very hard for me to follow the video. Not because of what was shown, the video itself is very well presented and the subject is taught well. Thanks for all of your videos, they really do help out an aspiring game dev!
Interesting, what part/concept did you have trouble following? Events are simple although they do require knowing about accessors, keywords, functions, etc.
@@CodeMonkeyUnity So mostly learned programming from online tutorials, but I never got proper lessons, so I fail to understand some basic concepts. What I'm struggling to understand is how do I apply this in systems I am trying to create. I'll check out some other tutorials to see how you implement events! Thanks for the reply!
So many videos make this complicated. (Some additional syntax might be helpful for those of us who see examples in ohter syntax, but this is so simple and easy to understand.) You made this seem way too easy. SMH!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! I've watched so many videos that try to take you through the event/delegate encyclopedia! Its overwhelming. I'm so refreshed. Thanks!
Wow, best Events explanation I have come by. I would suggest using console apps so that we can follow along 100%, but the instructions was so clear I had no issue following with a console app.
Fantastic stuff, I wish I had watched your tutorials ages ago, I just finished my first game see loads of places where the code could have been done much simpler and better. Just got your 50++ course will be going through that before starting the second one, keep up the great work.
As a designer, having programmed at the bare minimum level to get my stuff working for nearly 2 years, watching your videos makes I realize I know nothing about coding xD Thank you! These are very useful
Note: As I learned more about C# I had to update my post. I think this video is amazing; it demonstrates a great way to use events in unity. But...Even though the code is rock solid the explanation for the need of the event seems inadequate. Biased on your description you really don't need to use an event you could simply use a delegate. You said the key thing is the publisher does not know who the subscribers are...that can be done with just using a delegate instead of an event. (note: while the event is inside of the publisher class an event can be accessed just like an delegate, so the publisher doesn't see any difference between the two.) the reason you us a event over a delegate is the evert prevents subscribers from interfering with other subscribers by limiting the subscribers access to only the delegate's subset ( += -=) features. You can proves this yourself: remove the event keyword; the code will still work, but now the subscribers have the ability to change and invoke the delegate(which is a very-very bad thing.)
Nice lesson, I've been using events for a while but I just get stuck with Actions only and never even considered other ways of implementing this kind of observer pattern. Now I'm gonna try all of them and decide in which cases some of them are more convenient than others. Thanks!
Like others here I have been scanning the internet all day trying to get the hang of this, the other examples I found were way too complex and failed to just do the minimum to explain, as you did perfectly. It would have nice to include Unity events with parameters but I feel I can go back into the wild and find some other tutorials that will not be as good but you have given me the tools to beat them into submission.
One important distinction with the null conditional operator is that it sets a local variable to that first before checking null. This way it can maintain the thread safety it needs to not throw randomly. // this OnSpacePressed?.Invoke(this, EventArgs.Empty); // is actually this var onSpacePressed = OnSpacePressed; if(onSpacePressed != null) onSpacePressed.Invoke(this, EventArgs.Empty);
make a video on delegates and lambda expression. both makes code easier to read and write.. thats the main video we want. Glad u started making c# videos in unity. that means alot to us
Sometime ago I was looking for diffrence between Event and UnityEvent, there is diffrence in CG allocation one Event allocate less garbage than one Unity Event, but 10 Unity Events allocate much less garbage than one Event. Delegate Events are much faster than Unity Event - 4 years ago someone tested it on reddit. This may have changed because the articles are from 2016. Sources: jacksondunstan.com/articles/3335 www.reddit.com/r/Unity3D/comments/35oekm/delegate_events_vs_unityevent_which_one_is/
Please make a vid explaining delegates in great detail! This was soooo needed! I have been struggling with some code and using events will simplify it greatly! Thank you!
Thx for all! before I tot coding is just public or private variables and functions........but then I realize that those custom-like functions in C# is Modern language.!
Cool! You are Event creator to me , i am just subscriber hehe Clearly understand that Standard Visual Studio C# usage EventHandler. And more, understood that UnityEvent system. Thanks to share!
Hi there! I am a complete beginner and got very confused along the video at 6:00, but this detail helped me so it might help others make sense of the topic: In the current context " += " means subscribe. In other words it's like you are telling subscribe my method (the right operand) to this event (the left operand), this way, when the event is raised, your method will be called. Hope this helps somebody out here. Very nice video thank you @CodeMonkeyUnity
Yup exactly, you are "subscribing" or adding the method to the call list of the event. So when the event is fired all the methods that subscribed will run. I'm glad the video helped!
10:09 you're subscribing to the event at start, getting the argument and saying how many times it was pressed and then you're unsubscribing, so why does it keep counting how many spaces pressed if you unsubbed after first event fired?
I didn't quite understand one thing; At the beginning of the video, it is mentioned that an event does not know or care if it has any subscribers, but at 4:25 it throws a null reference exception because we do not have any subscribers. Can anyone explain this, please?
🌍 FREE C# Beginner Complete Course! th-cam.com/video/pReR6Z9rK-o/w-d-xo.html
🔴 Watch my Complete FREE Game Dev Course! 🌍 th-cam.com/video/AmGSEH7QcDg/w-d-xo.html
📝 C# Basics to Advanced Playlist th-cam.com/play/PLzDRvYVwl53t2GGC4rV_AmH7vSvSqjVmz.html
🌐 Have you found the videos Helpful and Valuable?
❤️ Get my Courses unitycodemonkey.com/courses or my Steam Games 🎮 unitycodemonkey.com/gamebundle
Here's the highly requested C# Events video! This is one of the most important things to know about C# in order to keep your code nice and clean.
🎮 Play 7 Awesome Games (Action, Strategy, Management) and Help Support the Channel!
✅ Get the Game Bundle 67% off unitycodemonkey.com/gameBundle.php
Hey, Love your videos! I was wondering could you someday make a complete C# course? You're one of the few people online who use a consistent coding "style" which makes everything easy to follow. I'd love to see an in depth C# series made by you.
@@dragonlord1935 Yup a complete C# course is definitely something I'd like to do, just need to find the time.
@@CodeMonkeyUnity make it soon man...please
I have a question:
As per my understanding of the unity engine, whatever happens in the 'update' function is executed every frame, then how does the Debug.log print "Space!" Whenever OnSpacePressed is invoked Even though the Debug.log doesn't stay in the update() !?
Do you have a tutorial where I can learn to use Test Driven Development approach in Unity?
Important: when using most (if not all) of the events described in the video is very important to unsubscribe from them when the listener is destroyed, since this could result in errors when calling events with dead listeners.
A video on delegates would be awesome. You could also talk about the differences between Strong and Weak references.
Wagner Ferreira good point and for anyone who doesn’t know one good place to do that in Unity is creating a void OnDestroy() and put all of the unsubs in there
@@judgegroovyman I've also seen that a good practice is to put the unsubs in OnDisable() as calling an event with disabled listeners may also lead to errors. If I'm not wrong, when an object is destroyed OnDisable() is called too.
Daniel Corzo that sounds even better than my suggestion!
The GC removes the object that was listening to the event, but not the registered listener itself, so when the event is fired the listener will be pointing to an invalid reference and throws an error. This is where using weak references is useful, but it is usually heavier since the event handler must check every listener for nulls before firing any events.
@@WagnerGFX And if you have multiple subscribers with multicastdelegates it can get even more grumping especially if someone decides to use an `async void` handler.
Also when the GC does a mark and sweep if you aren't using a weak reference it will keep the subscriber event after all other objects are dereferenced leaving you with a resource leaks.
There are really a lot of issues with the fundamentals of the events in .Net. It would be better if people used different patterns for decoupling.
Thank you for showing it in action with multiple examples, but without extra confusion!
I'm glad you found that helpful! Thanks!
The code shown at 10:14 should not allow "Space! 2" to "Space! 5" to show in the console at 10:23 as he is unsubscribing from the event as soon as he fires it.
Just wanted to clarify in case anyone else gets stuck wondering how he was able to fire off the event multiple times, I believe it was an editing error.
If you remove the unsubscribe it will work as he is showing.
Thank you this was confusing to me as well
Thanks
Thanks bro. 😀👍🏻
Thank you!
OMG i was loosing my mind over it
Repeatedly checking the script if i made any errors in it
Thank you Very much
If a tree falls in a forest, the event system doesn't care if anyone was listening if at all.
k
this is an oddly useful way of wording that information.
public class ForestManager {
public event EventHandler OnTreeFall;
private void Update() {
if (Input.GetTreeDown(TreeCode.Timbeeeeerrr)) {
OnTreeFall?.Invoke(this, EventArgs.WatchOut);
}
}
}
public class ForestHikerAndPartTimePhilosopher {
private bool isOutOnAHike;
private void Start() {
ForestManager universePhysics = FindManager();
universePhysics.OnTreeFall += TheUltimateQuestionAboutReality;
}
private void TheUltimateQuestionAboutReality(object physics, EventArgs e) {
if (isOutOnAHike) {
Debug.Log("A tree fell in the forest and a hiker is there, so he could hear the tree fall.");
}
else {
Debug.Log("A tree fell in the forest, but the hiker was not there, so he couldn't hear the tree fall. Did it make a sound?");
}
}
}
@@matshalvarsson8878 Looks like someone is procrastinating their real project XD
@@ShootYourBricks hahaha!
The shortest and clarifying video about events I've ever seen since now! Thank you.
I love these nuts and bolts tutorials you're now doing (in addition to everything else you do lol). You're such an excellent and thorough teacher. Your examples are so concrete and easy to follow.
These nuts.
@@bananenkris thats an old joke, a very old joke.
Damn.. I nearly searched the whole web on events/delegates, but your tutorial was the only one which made it clear for me!
Awesome explanation and practical use cases. You got a new subscriber =D
I swear I want to like it for 100 times, Your teaching method is remarkable.Thank You SOOOO much. You are a legend
This is single-handedly the best video on youtube about events. Thank you so much.
I've said it once but I'll say it again...
THANK YOU!
I'm a professional dev but new to game development, and these are the magic tutorials I have been looking for.
I absolutely love your approach to teaching and your commitment to proper design. Thanks for the utils as well! I subscribed on Patreon and am excited to follow all the amazing content you put out.
Seriously, absolutely amazing tutorials. I've shared with all my friends! :)
Thanks! Glad you like them!
Thank you so much for these tutorials! The way you start with basic examples and then gradually layer up the additional functionality has really helped my understanding of the underlying concepts (and meant that I can apply the learning confidently!).
I'm glad they've helped you! Thanks!
I think this is the sixth time I've returned to this video. It's such a great resource, both for usecases and syntax.
This is really the essential part to build a game. This should deserve more attention. Great job done!
Events are simple and powerful! Thank you again for teaching the concept here and in your "Turn Based Strategy" course! It was way more than what I paid, and I learned so much while having fun!
I'm glad you're enjoying the course! Thanks!
I was doing the unity KitchenChaos Course and came here for a little more help because I felt like I couldn't do this on scratch from my own. But after this video I feel like I completely grasp it and create an event system from scratch, so I can move on! Thank you for your videos!
Nice! Great job on going deeper on a specific topic!
Same. I stopped at this point and came here for more clarification before I move on with the course! Sadly I am still struggling to grasp the concept :3
@opt4623 don't worry, you're not alone! I watched it twice before it really started to stick.
Same here. Not surrender!!
This is awesome - I remember Unreal Engine having something similar ( back in UT99 ) - this is way more efficient than having scripts reference / check public variables / functions in other scripts.
Bonus points for the new C# 6 null-conditional operator - that's super useful too. :)
after learning about the delegates, learning about the events is pretty easy and as always your videos are the best for in-depth knowledge.
I watched multiple videos to try and understand events, but as usual, yours was the best and the one which actually helped me understand them! Thanks!
I'm glad the video helped! Events are insanely useful so I'm sure they'll help you a lot in your game dev journey!
I know it's an old video but i find si relaxing to listen and hear the keyboard sound in the back ! Thanks for those tutorial.
Thats gold, growing more interest every day on your channel! I was using a custom messaging system that i've learned to code in a very old unity book, probably from before event's support arrive in unity. It is basically a much more complex way to do what you do with events. I tried the unity courses on this before but your explanation is just clean and easy to understand. Adapting my projects now. Thanks!
I'm guessing you were using SendMessage(); which is one possible approach but it's not very good since it's very much based on strings which can easily break your code and causes terrible performance.
Thank you for these tuts. Im very new to C# scripting and am really enjoying the vids that you've been uploading on C# basics. Please continue them ;)
Glad you like them!
Thanks for a thorough yet concise explaination. Perhaps the best explaination of events I’ve seen.
Every now and then i need to use events again and i return here every time. Thanks for these videos
Excellent video been struggling with events, not any more
At 5:05 you said "awesome" which reminded me about Brackeys... oh no... I'm not crying... ;-;
Ever since I saw you using C# events a while back instead of UnityEvents, I decided to look into c# events. Now I have decided that's what I'm gonna use for now on.
And yea you should definitely do a tutorial on all that function variable goodness.
You should talk about:
* delegates
* Func, Action, Predicate premade delegates
* and how they can be used in a bunch of different ways like passing functions as parameters to another function. And also the idea of callbacks.
* Lambda functions
* Local Functions (these are actually kinda cool, idk if you ever used them but they are a nice alternative to lambda functions)
A really good example I know of for demonstrating Function variables would be the "Calculus Summation Function". Where you have to pass it 3 values: starting integer, summation size, and a function to apply the summation to. And the user can pass in any function they want like f(x) = x^2 and the summation would be like 1^2 + 2^2 + 3^2 + ... + n^2
Thank you codemonkey, couldn't remember how to relay some structured objects as eventarguments and remembered it through your video! Coming in very handy in the project I'm currently working on.
I'm glad the video helped you! Best of luck with your project!
If only I had seen this video before i started making my game... Thank you! I have learned a lot from this
Concise but fully and simple explained, I like that, you really have talent !............THX !
Man, watching this video made me realize I need some actual basic coding lessons, as it was very hard for me to follow the video. Not because of what was shown, the video itself is very well presented and the subject is taught well. Thanks for all of your videos, they really do help out an aspiring game dev!
Interesting, what part/concept did you have trouble following? Events are simple although they do require knowing about accessors, keywords, functions, etc.
@@CodeMonkeyUnity So mostly learned programming from online tutorials, but I never got proper lessons, so I fail to understand some basic concepts. What I'm struggling to understand is how do I apply this in systems I am trying to create. I'll check out some other tutorials to see how you implement events! Thanks for the reply!
So many videos make this complicated. (Some additional syntax might be helpful for those of us who see examples in ohter syntax, but this is so simple and easy to understand.) You made this seem way too easy. SMH!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! I've watched so many videos that try to take you through the event/delegate encyclopedia! Its overwhelming. I'm so refreshed. Thanks!
I'm glad the video helped you! Events are one of the most powerful C# features!
Dude, this was exactly what I was looking for--great stuff!
revised both delegate and events and it was really good ,thank you for ur explanation
Best teacher in utube man. Nothing else to say.
Thanks for the kind words!
Wow, best Events explanation I have come by. I would suggest using console apps so that we can follow along 100%, but the instructions was so clear I had no issue following with a console app.
Thanks for the work. Used to play around with unity and c# some years ago and have forgotten all. This is a good refresh.
Fantastic stuff, I wish I had watched your tutorials ages ago, I just finished my first game see loads of places where the code could have been done much simpler and better. Just got your 50++ course will be going through that before starting the second one, keep up the great work.
Yup Events are definitely a game changer when you learn about them, best of luck in your learning journey, I hope you like the course!
I just Unity events to solve a horrible problem I had. Thank you so much Code Monkey for these wonderful tutorials. May God bless u in abundance
Don't mind me, just feeding the algorythm as I'm here for the tenth time and can't upvote the video more.
Heh events are awesome but can definitely be tricky to understand, keep at it!
your tutorials are awesome, thank you for covering these topics, you barely skipped over any basics while keeping a good pace, I really appreciate it
I recently learned about these, and now am using them a lot. Really cool tool to use!
Very clear and good explained video, thank you sir and all your supporters!
Code monkey is the best. All the way till the end. ⭐️⭐️⭐️
This is everything I was looking for! Thank you!
Excellent video. First one to really explain this in an understandable and simple way. Thanks!
These tutorials have been immensely helpful to my team in school. Please do make a delegate video
I love you, code monkey!!! You are my favourite teacher officially now❤❤❤❤
I'm glad my videos have helped you!
Great tutorial. I was able to learn all the concept pointed and taught on this video.
I'm glad the video helped! Thanks!
As a designer, having programmed at the bare minimum level to get my stuff working for nearly 2 years, watching your videos makes I realize I know nothing about coding xD
Thank you! These are very useful
Heh there's always more to learn! It's a lifelong journey
I need to create some events today, but I forgot how to do that. You are a life saver (again) :-)
Hehe that's great, I'm glad the video helped! Events are awesome!
best of all event tutorials, thanks
I'm going to have to watch this at least 5 more times to get it, but this is definitely the video to watch.
Events are super confusing.
Yeah they do take a while to fully understand but once you do you will have added an extremely powerful tool to your toolbox!
thankyou, it's super clear especially after watching the delegates tutorial
I'm glad the video helped! Thanks!
At last. Finally i understand . thanks mate, saved me a lot of work. you have earned my subscription with this. good luck.
Note: As I learned more about C# I had to update my post.
I think this video is amazing; it demonstrates a great way to use events in unity. But...Even though the code is rock solid the explanation for the need of the event seems inadequate. Biased on your description you really don't need to use an event you could simply use a delegate. You said the key thing is the publisher does not know who the subscribers are...that can be done with just using a delegate instead of an event. (note: while the event is inside of the publisher class an event can be accessed just like an delegate, so the publisher doesn't see any difference between the two.) the reason you us a event over a delegate is the evert prevents subscribers from interfering with other subscribers by limiting the subscribers access to only the delegate's subset ( += -=) features. You can proves this yourself: remove the event keyword; the code will still work, but now the subscribers have the ability to change and invoke the delegate(which is a very-very bad thing.)
solid explanation and clear way, thank you !
Thank you so much for explaining this. After so long I've finally understood this.
I'm glad the video helped! Thanks!
A video about delegates would be absolutely appreciated.
Best video on Events I've seen so far!
Nice lesson, I've been using events for a while but I just get stuck with Actions only and never even considered other ways of implementing this kind of observer pattern. Now I'm gonna try all of them and decide in which cases some of them are more convenient than others. Thanks!
Like others here I have been scanning the internet all day trying to get the hang of this, the other examples I found were way too complex and failed to just do the minimum to explain, as you did perfectly. It would have nice to include Unity events with parameters but I feel I can go back into the wild and find some other tutorials that will not be as good but you have given me the tools to beat them into submission.
Wow thanks sir. You r making us CodeGorilla 😍
Excellent tutorial! Thank you kindly.
Once again you are making a difficult topic accessible! Love your work, mate! Many thanks. :D
One important distinction with the null conditional operator is that it sets a local variable to that first before checking null. This way it can maintain the thread safety it needs to not throw randomly.
// this
OnSpacePressed?.Invoke(this, EventArgs.Empty);
// is actually this
var onSpacePressed = OnSpacePressed;
if(onSpacePressed != null)
onSpacePressed.Invoke(this, EventArgs.Empty);
Great video. You know sometimes I imagine Code Monkey typing with his tung out like the avatar.
make a video on delegates and lambda expression.
both makes code easier to read and write.. thats the main video we want.
Glad u started making c# videos in unity.
that means alot to us
Yes, please, a video about delegates and relationship with events. Keep the good job. I will become a patreon very soon. =)
Sometime ago I was looking for diffrence between Event and UnityEvent, there is diffrence in CG allocation one Event allocate less garbage than one Unity Event, but 10 Unity Events allocate much less garbage than one Event. Delegate Events are much faster than Unity Event - 4 years ago someone tested it on reddit. This may have changed because the articles are from 2016.
Sources:
jacksondunstan.com/articles/3335
www.reddit.com/r/Unity3D/comments/35oekm/delegate_events_vs_unityevent_which_one_is/
Interesting, I dont usually add and remove event subscribers lots of times so never had issues with garbage, good to know!
This video made me understand events! Thank you!
I'm glad the video helped you! Thanks!
Thank you ! My code is so much cleaner after your video !
It was good to see all these versions used together
Thank you !
Perfect explanation!!!!!
Please make a vid explaining delegates in great detail! This was soooo needed! I have been struggling with some code and using events will simplify it greatly! Thank you!
I'm excited to incorporate this into my next project!
You forgot to mention that if we want to use a generic UnityEvent (That takes arguments) we need to create an empty class that inherits UnityEvent
This is excellent work. Keep it up.
This was extremely useful and well explained. Thank you for your work!
Great tutorial, thanks for sharing, clear and concise
Very Nice! Thanks Man! You're Awesome! It's so good to have your tutorials!!!
Thx for all!
before I tot coding is just public or private variables and functions........but then I realize that
those custom-like functions in C# is Modern language.!
Great tutorial and very clear!! thank you.
Cool! You are Event creator to me , i am just subscriber hehe
Clearly understand that Standard Visual Studio C# usage EventHandler.
And more, understood that UnityEvent system.
Thanks to share!
awesome tutorial. way better than the official tutorials from unity haha. Tnx
4:19 "Press Space" *sends spacebar to heaven* "There we go! We have an error"
I love you
Thank you so much, I finally understood the concept a lot better now😊
Thank you for this tutorial ! I cant wait the multi-player ones :)
And thank you for the long intro version :D
I'm not a game dev, but I use the Azure EventGrid when I build APIs in the cloud. This helps a lot!
Yup C# works mostly the same in game dev or software dev, it's a really awesome super versatile language!
Thanks it was super easy to follow and implement in my own game
This also helps me with Godot, which also has C# support. Thank you!
Thanks, clear and elegant.
thanks buddy, today i used this eventhandler in my project
Nice! I hope it helped! I love events
So very-well-explained!!!! Thank you so much.
Hi there!
I am a complete beginner and got very confused along the video at 6:00, but this detail helped me so it might help others make sense of the topic:
In the current context " += " means subscribe. In other words it's like you are telling subscribe my method (the right operand) to this event (the left operand), this way, when the event is raised, your method will be called.
Hope this helps somebody out here.
Very nice video thank you @CodeMonkeyUnity
Yup exactly, you are "subscribing" or adding the method to the call list of the event. So when the event is fired all the methods that subscribed will run.
I'm glad the video helped!
10:09 you're subscribing to the event at start, getting the argument and saying how many times it was pressed and then you're unsubscribing, so why does it keep counting how many spaces pressed if you unsubbed after first event fired?
You are the best!! Huge fan of your tutorials 😊🙏
Thanks! I'm glad you found them helpful!
That was great explanation.
I didn't quite understand one thing;
At the beginning of the video, it is mentioned that an event does not know or care if it has any subscribers, but at 4:25 it throws a null reference exception because we do not have any subscribers. Can anyone explain this, please?
The event is an object, if it has no subscribers then it defaults to null. So you do need to do a null check.
@@CodeMonkeyUnity How does the event get rid of the null state? Does it get out of the null state after first pressing of space button?
@@recepcakir4866 You only trigger the event if its not null
if (OnMyEvent != null) {
OnMyEvent(this, EventArgs.Empty);
}
Great c# course started :) keep going!