This topic is very broad and highly subjective, but I wanted to get a general idea for how people feel about this topic. I’ve just started playing with Unity again (never made it past a beginner stage of use) and as I’m learning C# alongside the editor, I began to wonder how much time I should spend in certain areas before I’m wasting time in my self-education (I am currently 1 week in).
Here’s some context: at the moment I’m creating small scenes that focus on specific things that I want to learn (a “Movement Playground” to practice the basics of movement - another scene titled “Firing Range” so I cant test several different setups for shooting, etc.). I’ve been primarily focused on getting things to just work; taking little care into how efficient the code is or if it’s mildly buggy because I just want to see results and know that at the very least, I’m capable of making it functional. The crux of my question is this - am I harming myself in the long-term by doing this? Should I be spending more time to make sure that that I can fine-tune my code and know the details of the Editor before moving forward?
Again, I know this is usually based upon circumstances and/or how the user learns, but I wanted to know if there are some major pitfalls in what I am doing that I might not see because I haven’t experienced this yet.
I think you should learn as you go. This way you won’t clutter your brain with things that you’ll use once, maybe twice (most likely while working through a tutorial) and only learn stuff required to do your job.
Remember that you can always learn when you actually need that thing (need saving? Read on PlayerPrefs or BinaryReader/BinaryWriter, need animation? Read on Mecanim, need advanced audio? Read on Unity’s audio system and so on), there’s no reason of trying to learn everything at once because you’ll forget (because you won’t use it) and need to re-learn it anyway.
Most of Unity/C# things are easily googleable so when you need something, you’ll find it.
When you say you’re “learning C# alongside the editor”, what do you mean?
I’d suggest putting dedicated time into each, but it doesn’t have to happen in any particular order. Your first project won’t be your last, and you shouldn’t be overly concerned with any project being perfect - just make sure you reflect on and learn from each one to make the next one that much better.
This all excellent advice - thank you! And I’ve only heard of the Shia LaBeouf thing from friends so finally seeing it (and with context) makes it pretty great
I’ve got a plan that I will be giving a couple of hours each day (I’ve finished one week so far) on practicing programming and Unity. I’ve found that using them in conjunction with one another helps keep me motivated because I have something practical and tangible to do with my developing skills. Again, thank you for the advice ![]()
Hang out in the forums and answers. Particularly the scripting section. It’s amazing how much you can pick up by offering new users help and reading the responses of experienced users.
Spend some time reading about the theory of coding. I often have a few Wikipedia articles on my phone for when I have a few minutes spare.
And make tons of projects. Don’t be afraid to start over frequently.
I think this is a great way to learn. Learning how to use a 3d engine is actually a pretty huge task, there are so many different bits and pieces to familiarize yourself with and many of those subjects can get very deep very fast. Take simple chunks, play with them, see what you can do with them.
It seems like you’re worried about learning bad habits or writing sloppy code. Don’t. Just learn how the different systems in Unity work. You can’t come up with a good design unless you have a sound understanding of the systems and tools that you are working with.
These are my exact sentiments.
Build a portfolio! Which means, mastering what you need, in order to product releasable projects. Start crappy, and work your way up.
And, OMG - that Shia LaBeouf video!
Gigi
I would add: don’t try to build everything yourself when there are advanced and easy to use asset store plugins that will pretty much do it for you!
Originally we bought Pool Manager and some Prime31 stuff. These days we use different plugins but we definitely saved tons of time with the Asset Store.
If you wait until you have mastery, you will always be waiting. I’ve been developing my skills for more than a decade, and I’m still not close to mastering these disciplines. I’m quite good, and can do quite a bit at this point. But I’m no master.
Better to just start getting your hands dirty, and learn as you go. You’ll learn more from trying and failing than you ever would in a more academic setting.
This is basically what I’m doing combined with what you are doing. I have test projects as well where I play with my inefficient scripts just to see if I can get a certain mechanic working. If I do I clean the script as best I can, comment it (so painful but so necessary) so I know what I was doing & then save it into a script folder. When I go to game jams I have a set of prebuilt scripts that give me the basic start that I can then build on & combine. Doing it this way let our team get 2 small games out in the last 48hr game jam we had as well as getting me a couple of new mechanics that we worked out at the time that I could take home, fix up & then re-add to the collection.
Hanging in the forums is good as well, I have so many threads bookmarked where there are discussions/solutions on things that I’m thinking I will probably want to get to at some time in the future.
I think you’re kicking butt if you’re actually doing this… because a lot of people don’t. You never know what challenge you’re going to have, so you’re basically preparing yourself for the unknown by learning this… and that… you can go one area at a time until you have broad knowledge of Unity and vector maths and 3D graphics, and you will start to be able to pull from those random little experiences (and also you can just literally pull code from those projects) in order to solve more complicated problems fast.
It always amazes me when I see different people’s solutions to a problem and how much of a difference it makes if the person has done something similar before. You’re setting yourself up for winning.
When it comes to programming I say dive right in and learn as you go, you’re doing it right. Yes you’ll rewrite lots of stuff many times. You’ll also get lots and lots of practice which lets be serious - is how you become a good programmer.
No one I know has ever become an expert just studying programming books, it’s the figuring out stuff in real code that you typed without copying and pasting that triggers the aha moments. Do that thousands of times and you can build a good career on it.
That’s the way I like to approach things. If you can make the code and prefabs modular so they aren’t bound to any project then you can take them into any project where you need them.
@hippocoder I love that setup.
Person 1: Do you like red or blue?
Person 2: Yes.
While that genuinely made me laugh, I also completely agree with it!
This, very much this. Don’t worry about making the perfect thing now. Make a finished thing, and then make a better finished thing tomorrow. Rinse and repeat.
Getting stuff finished is always important. Getting them perfect is often not, and is an incredible time sink.