- Home /
The question is answered, right answer was accepted
Good advanced Unity C# programming tutorials?
I've watched this series of videos and I was really happy about it! (in specific the Coroutine manager, the object recycler, extensions, actions, LINQ, etc)
Not sure if there is any, but what I'm looking for in specific:
I want some tutorials on applying programming patterns (Mediator, observer, singleton, etc) on game programming situations/examples.
More real-life/in-game examples of events/delegates and sending/receiving messages to/from objects.
A tut that teaches some good programming habits to have. I've read NGUI's code and I'm quite impressed by how high the quality of the code is, I want to improve myself to be able to reach that level. For example, most the times when setting something, he checks if the variable he's setting value != new value. This is just a trivial example but you could learn a lot just by reading NGUI's code.
More stuff like the ones in the video series in the above link.
Code management! yes this is a big one. How to organize your code and scripts and tie them up together in the best way.
I'm asking because most the times when I read and try to learn about a pattern for example, or any other topic in code project for example or dot net pearls or any other place, they give examples about stuff like accounting, stocks, news feeds and all that, I'm not really interested in that, I wanna be able to easily map between a pattern and its usage in game programming. That's why I asked about 'in-game examples', or 'situations in gaming' where I might need a specific programming idea.
Again, I'm looking to improve my programming skills by learning good habits, advanced stuff and useful tools, so if you know of anything that might help me reaching my goal, pass 'em over :) (VIDEO/TEXT tut)
Thanks a lot in advance!
EDIT: I HAVE FOUND MY ANSWER HERE! I DON'T KNOW HOW PEOPLE DON'T KNOW ABOUT THIS GUY!
While @Jamora has been kind enough to provide a comprehensive answer, please note that Unity Answers is not the right place for generic questions, or multiple-questions-in-one-post like this. Please use the Unity Forums for that.
O$$anonymous$$ sure. I will take note of that in the future. Can I move it somehow? - They're not 'multiple-questions-in-one-post' - they all circle around the same axis :)
Thanks, I know about them. but I found something even more cooler, I'm just surprised as to how come nobody ever found out about him. Updated my question to include the link to his channel.
Answer by Jamora · Sep 07, 2013 at 02:05 PM
First some thoughts on programming as a skill, then giving a not-really-an-answer to your question...
The thing with programming is that it can't really be taught, only learned. It's a hands-on skill, like carpentry or metalworks or pottery.
People do (probably) take carpentry lessons if they want to become carpenters, but I can't imagine the teacher there telling the students: "The chisel is used to chip wood in small chunks." etc. and the students just listening. No, he shows what the chisel is and how it can be operated on a block of wood and what the outcome is. Then he sends the students to do their own thing with it.
The big difference with tools in carpentry and programming are that you don't need to remember (though you probably do) all of the carpentry tools you know how to use by heart. You can just hang all your tools on a wall and choose the correct one for the job. Programming tools are not physical objects, so your tool-collection is only inside your head.
My non-answer to you is: A good way to broaden your horizons and learn new ways of thinking is to restrict your tool-collection. Have you ever tried to make a game without using if-clauses (except maybe checking for raycasts, input etc. in code you can't control) or for loops in your game logic? How about not using the Update function (except, for input checking)? How about trying to keep your functions short, so that no function will ever have more than, say, 6 lines of code? Try one of these (or something similar), and if you get stuck, ask here or other programming forums.
Thanks for your answer.
I know exactly what you mean! That's the main reason why a lot of students in my class had trouble with program$$anonymous$$g, they took it all in theory, no practice. It is indeed a skill to be gained with practice and time.
By 'tools' I just meant cool and powerful ways to solve problems, problems that one might not easily solve unless using those tools.
Like for example I remember when I was first grade me and my friend were trying to make a simple calculator that accepts input from left to right, and accepts parentheses and give you the correct output, it was tough, we gave up on it, but I'm sure if we were to continue thinking about it, we would come up with, mostly unorthodox ways to solve it... In my 2nd year I learned about the stack data structure, and funny thing one of the examples we took was to make that calculator! it wasn't as easy as we thought me and my friend, but after we learned about the stack, it made perfect sense!
So the point is, we've learned about a new 'tool' which enabled us to solve problems we couldn't solve before, or maybe solve but not the right and most robust way.
I know this question is old, but here's a useful website with problems to solve and will also practice you to resolve algorithms: project euler
@Crazydadz He may not have seen it, but I'm using project euler now thanks to you XD
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Unity 2020.3.21f1 running slow 2 Answers
Distribute terrain in zones 3 Answers
Forcing a program to initialize inside Unity game. 1 Answer
I'm A beginner 1 Answer