I don’t know if this will help you or not, but two years ago I couldn’t write a “hello world” program in C# and today I’m doing it professionally as a developer. After only a month of working in C# I developed my first application (a mobile barcode scanning software used for inventory at my company). How did I manage that?
While I would love to claim that I read a lot of books, I didn’t. I would love to tell you that I spent those two months in a class room, but that wouldn’t be true either.
In the end, I download Visual Studio Express and simply started. The trick really was to surround myself with as much visual input (video Tutorials) as possible, starting small with infamous programs like Hello World and cotinue to simply invent more and more elaborate projects until I got to the point where I was actually making useful stuff. Working in a team with other programers was also a really important thing, because as I learned to make things work, people where constantly showing me the flaws in structure, code or what not. AKA showing me better ways to do things. When I started working with Unity I really had a strong understanding of at least how C# worked and when I started the newbie tutorials here they simply made perfect sense.
The morale of the story is the best way to learn is to simply start and if you are going to learn C# while creating Unity programs, while not the best way to do it, as long as you are programming and really trying very hard to keep things as simple as bloody possible you will very rappidly pick things up as long as your enthusiasm for it doesn’t waver, because it really just takes time for things to sink in.
My suggestion is to find guys like me, who are just a little bit ahead of you and get together with them and work with them on projects. At first you probobly won’t be able to contribute too much, but just having access to someone who is actively working on things and having conversations, looking at code, watching tutorials… all that stuff at once, a few hours each day. It won’t take you more than a few weeks before someone asks you, hey can you create a little interface for this thing for me and you know exactly what to do and how to do it.
But I will repeat myself and say… start small. Tiny… Im talking trying to create a C# script that lets you move a box around in a 2d enviroment. Than try to add a ball that bounces of it. Try to create a counter of how many times you can bounce that ball of it. Anytime you get stuck… do some Youtube tutorials (Tornado Twins are awsome).
Oh and really try not to post questions until you are really really stuck. Really try to work through problems. Force yourself to try to figuire things out, because everytime someone feeds you a line of code, while you can solve the problem, it teaches you the bad habbit of not relying on yourself. That was a really tough lesson for me. But building up the confidence to do it yourself and get through problem yourself is really a big part of the process.
Im starting to get a little winded, but I couldnt help but notice how much your post reminded me of me when I got started. Its a great journey and Unity3d is an awsome experiance. I have search high and wide for various tools, languages, engines out there and I can tell you that for beginners there really is no substitute for Unity3d. It is simply the most ideal learning enviroment you could possibly ask for.