What are Events? (C# Basics)
Vložit
- čas přidán 8. 02. 2020
- 🌍 FREE C# Beginner Complete Course! • Learn C# Beginner FREE...
🔴 Watch my Complete FREE Game Dev Course! 🌍 • Learn Unity Beginner/I...
📝 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
🌍 FREE C# Beginner Complete Course! czcams.com/video/pReR6Z9rK-o/video.html
🔴 Watch my Complete FREE Game Dev Course! 🌍 czcams.com/video/AmGSEH7QcDg/video.html
📝 C# Basics to Advanced Playlist czcams.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?
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.
I swear I want to like it for 100 times, Your teaching method is remarkable.Thank You SOOOO much. You are a legend
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!
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
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.
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!
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.
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 showing it in action with multiple examples, but without extra confusion!
I'm glad you found that helpful! Thanks!
Thanks for the work. Used to play around with unity and c# some years ago and have forgotten all. This is a good refresh.
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!
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!
after learning about the delegates, learning about the events is pretty easy and as always your videos are the best for in-depth knowledge.
Concise but fully and simple explained, I like that, you really have talent !............THX !
I recently learned about these, and now am using them a lot. Really cool tool to use!
Once again you are making a difficult topic accessible! Love your work, mate! Many thanks. :D
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. :)
If only I had seen this video before i started making my game... Thank you! I have learned a lot from this
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'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!
solid explanation and clear way, thank you !
Dude, this was exactly what I was looking for--great stuff!
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!
Very clear and good explained video, thank you sir and all your supporters!
Excellent video been struggling with events, not any more
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!
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!
At last. Finally i understand . thanks mate, saved me a lot of work. you have earned my subscription with this. good luck.
This was extremely useful and well explained. Thank you for your work!
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!
revised both delegate and events and it was really good ,thank you for ur explanation
Very Nice! Thanks Man! You're Awesome! It's so good to have your tutorials!!!
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!
Thanks, clear and elegant.
At 5:05 you said "awesome" which reminded me about Brackeys... oh no... I'm not crying... ;-;
Great tutorial. I was able to learn all the concept pointed and taught on this video.
I'm glad the video helped! Thanks!
best of all event tutorials, thanks
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
Best video on Events I've seen so far!
Thank you so much, I finally understood the concept a lot better now😊
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
Great tutorial and very clear!! thank you.
Thank You very much. awesome video and explanation
Thanks it was super easy to follow and implement in my own game
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
Clear and easy, thank you!
Great tutorial, thanks for sharing, clear and concise
Thank you !
Perfect explanation!!!!!
This is excellent work. Keep it up.
Great c# course started :) keep going!
This video made me understand events! Thank you!
I'm glad the video helped you! Thanks!
Code monkey is the best. All the way till the end. ⭐️⭐️⭐️
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 teacher in utube man. Nothing else to say.
Thanks for the kind words!
To the point video..
Thanks
Thank you, best events tutorial
It was good to see all these versions used together
That was great explanation.
I'm excited to incorporate this into my next project!
This is a great video. Thank you so much!!!
Excellent. Thank you so much.
Great tutorial, thank you!!!
Thanks for this amazing tutorial sir. 😀🙌🏻
thanks you so much ! its really useful
Very helpful! Thanks!
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
Thanks a lot! Really great video
Thank you very much for this video!!!
Thank you so much for explaining this. After so long I've finally understood this.
I'm glad the video helped! Thanks!
Thank you for this tutorial !
you are making solid content !
thankyou, it's super clear especially after watching the delegates tutorial
I'm glad the video helped! Thanks!
Thank you for this tutorial ! I cant wait the multi-player ones :)
And thank you for the long intro version :D
thanks you very much! you are my hero!!!
You are the best!! Huge fan of your tutorials 😊🙏
Thanks! I'm glad you found them helpful!
Spasibo ) Nice events description! ) thanx
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!
Yes, please, a video about delegates and relationship with events. Keep the good job. I will become a patreon very soon. =)
I love you, code monkey!!! You are my favourite teacher officially now❤❤❤❤
I'm glad my videos have helped you!
Thank you ! My code is so much cleaner after your video !
These tutorials have been immensely helpful to my team in school. Please do make a delegate video
A video about delegates would be absolutely appreciated.
Great tutorial!
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 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!
This also helps me with Godot, which also has C# support. 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
This video is fantastic