How do I learn C# completely?

I am new and I want to learn c#, I was new so I followed several tutorial now I am able to do the basic movement of player and camera, but that’s not enough I want to be a expert is there any unity full tutorial like from unite now that teaches me everything from start to end, I have already tries almost every tutorial on youtube and I need more.

Mate, you’re talking about a topic that’s probably deep enough to fill an entire bookshelf - and then some.

From what I’ve gleamed from the experienced users here, coding in general is a discipline that takes years to grow comfortable in, and many more to master. Not to mention the fact that there’s countless specific fields of knowledge that you can pursue for potentially years (shaders, for example).

And a lot of what you’re going to learn you’ll be learning as you attempt to achieve your goals, particularly in your foundational period. You’ll hit something you don’t know, learn it, get a handle on it, and used that to move forward.

In particular for your beginners period, you’ll hit a lot of things you more or less can’t achieve due to your inexperience. And in those situations, you may just need to scale back your goals in scope for the time being.

I’ll also say it’s more than just following tutorials that make the coder. You’ll be consuming tutorials (both in video and written form), articles, blogs and learning from various communities and connections. Read Dev-diaries of the type of games you want to make, hell even reach out to the devs themselves! Even the C# documentation itself is a treasure-trove of information.

So what this ramble amounts to, is - that like most questions in life - the answer is usually: It’s Complicated, and never quite that simple as you’d hope.

I’ve only been doing this coding thing myself for 6 months, but in those six months I’ve gone from being confused about how to move a cube, to having my own node-basic logic system using Unity’s experimental GraphView api.

But I won’t leave you with nothing. My latest reading material has been Game Programming Patterns, which has given me a log of good tools in how to architect game systems, which you can read here: Table of Contents · Game Programming Patterns

Of course you can find (somewhat) reasonably priced online courses for C#, and there is also Unity Learn’s Junior Programmer course: Junior Programmer Pathway - Unity Learn that you probably are already doing, but if you aren’t, it’s where I started.

In the end, like all things, it takes time and patience.

3 Likes

To add, since you are learning C# for the sake use using Unity, you will be learning how to use Unity as much as you are learning C#. Even assuming you are a C# master wizard right now with knowledge on the level of not needing to google search, you will still be learning how to use Unity.

2 Likes

While your goal is definitely a nice one… it’s unrealistic - and may not be as useful as you imagine. As others said, C# alone is only half the game if you only want it to use Unity. The best way to learn both would be to start with these beginner tutorials and then tackle progressively harder / more complex game projects. Each one will strengthen the knowledge you already have while introducing you to new topics, which you will just naturally stumble into while researching certain features. If you want to test your current knowledge level, Sebastian Lague did a great C# + Unity beginner series on youtube. If you already know the basics, it wont take you a ton of time to follow along, and he offers little exercises to test what you know. Everybody means something else when they say they know the basics. Does it onclude object oriented programming, ie classes, inheritance, polymorphism, …? Because that’s kinda important but not necessarily something you run into when watching tutorials on a language.

If you want to master all of C# specifically, go to the documentation, read all of it and memorize it. No seriously. However, even if you did that, there is a long way between knowing all C# has to offer and knowing when or how to use it. And even if you knew that, to truly master programming there is a whole lot more to it than just mastering the language itself. The important bits and pieces then come in the form of different data structures, how they compare, when to use them, or how the computer works internally, thus which optimizations can be done, or what time and space complexity is or how they may help you approach a problem correctly… or in other words: computer sciences.
“Mastering” something is a strong word. You likely heard the phrase that mastering something takes 10.000 hours. I do have a masters degree in computer sciences and knew how to program for 7 years now, and i dont feel like i mastered anything yet. I do know a lot more about all the things i dont know yet tho :smile: There is always more to learn, more to improve, and new topics to dive into. You just get progressively better at these things. I feel more than qualified to approach any problem im interrested in, or even give advice… but mastering?
I dont think i’d ever even use that term.

Really, approach it slowly. It’s mostly learning by doing, and a lot of it comes with experience. Finish your current project, then move on to something harder, something slightly more complex, or simply something you are interrested in once you feel comfortable in the basics. Finish the project, repeat the cycle. You will naturally stumble upon new topics to research or new approaches to old topics while doing so. And that’s how you add tools to your toolbelt and learn what tool is right for which kind of situation.
Then once you feel comfortable with C# itself (including OOP), and dont stumble upon a lot of features anymore you didnt know about, then look into some of the helpful language inspecific areas you may eventually need. Like space and time complexity, data structures (maps and trees are very important to look into), or even multithreading when you feel like tackling it (advanced!).

The most important thing is to keep yourself entertained. If you really go out and read the documentation, you will likely quit in a couple days. Not a whole lot of people would pull that off. However, if you keep yourself entertained while learning new things, over the next year or two you will probably feel very comfortable in your ability to tackle most game related problems. And if there is a specific topic you need help with, this forum exists for just that :slight_smile:

If the above is not what you wanted to hear… buy a C# book.

3 Likes

All of the above posts have solid information in them but they have left out one important detail: tutorials are made primarily for beginners. Yes, there are occasionally some out there that are focused on topics that cross into more difficult topics, but these tutorials are very much the exception not the rule.

Once you want to move beyond being a beginner you need to start looking beyond tutorials. Most of the advanced topics are covered by sources like GDC (Game Developer Conference) videos, white papers, developer blogs, and so on.

Mine’s at Basic Programming. Those are pretty much my lecture notes and examples from when I taught freshman college C++ (and C# later) but written up using C# inside of Unity.

It’s really for people who’ve gotten to where they’re stuck on the programming part of making a game and are like “learning all this stuff at once is a mess. I’m going to just learn programming first”.

1 Like