What are Events? (C# Basics)
HTML-код
- Опубликовано: 8 фев 2020
- 📝 C# Basics to Advanced Playlist • C# Basics to Advanced
🌍 Get my Complete Courses! ✅ unitycodemonkey.com/courses
👍 Learn to make awesome games step-by-step from start to finish.
🎮 Get my Steam Games unitycodemonkey.com/gamebundle
✅ Let's check out what are C# Events, how we can use them and how they help us keep our code nice and clean.
For example Events are excellent for separating Logic from Visuals. Recently I made a video covering a Skill Tree and in it I used the same Level System I made months ago but with a different visual interface.
Learn Unity in 17 MINUTES!
• Learn Unity in 17 MINU...
Learn C# BASICS in 10 MINUTES!
• Learn C# BASICS in 10 ...
What are Events? (C# Basics)
• What are Events? (C# B...
What are Delegates? (C# Basics, Lambda, Action, Func)
• What are Delegates? (C...
What are Interfaces? (C# Basics)
• What are Interfaces? (...
What are Generics? (C# Basics)
• What are Generics? (C#...
What are Loops? (C# Basics, for, while, do)
• What are Loops? (C# Ba...
Unity Tips in 10 MINUTES!
• 12 MORE Unity Tips in ...
Unity Basics for Beginners
• Learn Unity in 17 MINU...
Level System in Unity
• How to make a Level Sy...
Simple Skill Tree in Unity (Unlock Abilities, Talents)
• Simple Skill Tree in U...
If you have any questions post them in the comments and I'll do my best to answer them.
🔔 Subscribe for more Unity Tutorials / @codemonkeyunity
See you next time!
📍 Support on Patreon / unitycodemonkey
🤖 Join the Community Discord / discord
📦 Grab the Game Bundle at unitycodemonkey.com/gameBundl...
📝 Get the Code Monkey Utilities at unitycodemonkey.com/utils.php
#unitytutorial #unity3d #unity2d
--------------------------------------------------------------------
Hello and welcome, I am your Code Monkey and here you will learn everything about Game Development in Unity 2D using C#.
I've been developing games for several years with 7 published games on Steam and now I'm sharing my knowledge to help you on your own game development journey.
You can see my games at www.endlessloopstudios.com
--------------------------------------------------------------------
- Website: unitycodemonkey.com/
- Twitter: / unitycodemonkey
- Facebook: / unitycodemonkey
📝 C# Basics to Advanced Playlist ruclips.net/p/PLzDRvYVwl53t2GGC4rV_AmH7vSvSqjVmz
🌐 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?
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!
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.
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
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.
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
This is single-handedly the best video on youtube about events. Thank you so much.
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
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!
Thanks for a thorough yet concise explaination. Perhaps the best explaination of events I’ve seen.
This is really the essential part to build a game. This should deserve more attention. Great job done!
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 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.
Excellent video been struggling with events, not any more
Thank you for showing it in action with multiple examples, but without extra confusion!
I'm glad you found that helpful! Thanks!
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 think this is the sixth time I've returned to this video. It's such a great resource, both for usecases and syntax.
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!
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!
This was extremely useful and well explained. Thank you for your work!
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
Thanks for the work. Used to play around with unity and c# some years ago and have forgotten all. This is a good refresh.
If only I had seen this video before i started making my game... Thank you! I have learned a lot from this
Once again you are making a difficult topic accessible! Love your work, mate! Many thanks. :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! :)
Thanks! Glad you like them!
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.
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.
Excellent video. First one to really explain this in an understandable and simple way. Thanks!
I recently learned about these, and now am using them a lot. Really cool tool to use!
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!
Dude, this was exactly what I was looking for--great stuff!
At 5:05 you said "awesome" which reminded me about Brackeys... oh no... I'm not crying... ;-;
revised both delegate and events and it was really good ,thank you for ur explanation
Great video CM/Hugo!
Events can be quite tricky in C# as there are so many different approaches that ultimately seems to lead to the same result, you clarified the difference very well!
I'm glad the video helped you! Thanks!
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!
Best video on Events I've seen so far!
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!
Concise but fully and simple explained, I like that, you really have talent !............THX !
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!
Very clear and good explained video, thank you sir and all your supporters!
Excellent tutorial! Thank you kindly.
So very-well-explained!!!! Thank you so much.
Every now and then i need to use events again and i return here every time. Thanks for these videos
At last. Finally i understand . thanks mate, saved me a lot of work. you have earned my subscription with this. good luck.
Great c# course started :) keep going!
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!
best of all event tutorials, thanks
Great tutorial, thanks for sharing, clear and concise
This is excellent work. Keep it up.
Very Nice! Thanks Man! You're Awesome! It's so good to have your tutorials!!!
Thank you so much, I finally understood the concept a lot better now😊
These tutorials have been immensely helpful to my team in school. Please do make a delegate video
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
Thank you !
Perfect explanation!!!!!
Great tutorial and very clear!! thank you.
It was good to see all these versions used together
Yes, please, a video about delegates and relationship with events. Keep the good job. I will become a patreon very soon. =)
Thank you for this tutorial ! I cant wait the multi-player ones :)
And thank you for the long intro version :D
Thanks, clear and elegant.
Clear and easy, thank you!
That was great explanation.
I'm excited to incorporate this into my next project!
Thanks for this amazing tutorial sir. 😀🙌🏻
Code monkey is the best. All the way till the end. ⭐️⭐️⭐️
This video made me understand events! Thank you!
I'm glad the video helped you! Thanks!
solid explanation and clear way, thank you !
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!
I love you, code monkey!!! You are my favourite teacher officially now❤❤❤❤
I'm glad my videos have helped you!
A video about delegates would be absolutely appreciated.
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.
Thank you, best events tutorial
you are making solid content !
Thank you for this tutorial !
Great tutorial. I was able to learn all the concept pointed and taught on this video.
I'm glad the video helped! Thanks!
Thank you so much for explaining this. After so long I've finally understood this.
I'm glad the video helped! Thanks!
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!
Great tutorial, thank you!!!
You are the best!! Huge fan of your tutorials 😊🙏
Thanks! I'm glad you found them helpful!
Spasibo ) Nice events description! ) thanx
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 teacher in utube man. Nothing else to say.
Thanks for the kind words!
This is a great video. Thank you so much!!!
Thanks it was super easy to follow and implement in my own game
Great tutorial!
Thanks a lot! Really great video
To the point video..
Thanks
Wow thanks sir. You r making us CodeGorilla 😍
Thank You very much. awesome video and explanation
Excellent. Thank you so much.
Very helpful! Thanks!
Great video. You know sometimes I imagine Code Monkey typing with his tung out like the avatar.
you explain so well. so please do one for delegates... This is the first time I truly understand the concept of event...
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!
Thank you very much for this video!!!
thankyou, it's super clear especially after watching the delegates tutorial
I'm glad the video helped! Thanks!
Wow, this is really good!
Yes please, if you don't mind, please make a video on deligates 🤓
A video about custom unity events would be good and how coule we use them in a good and clean way :)
thanks buddy, today i used this eventhandler in my project
Nice! I hope it helped! I love events