I set out on a mission to learn Unity perhaps a couple of years ago now. I ported Balloonz to Unity (using UnityScript), and wrote a shallow port of Jake Gordon’s Finite State Machine. It was a brief flirtation, cut short by the fact that I hated UnityScript with a passion. The problem for me was that I know browser-based JavaScript really well, and UnityScript is superficially similar syntax wise, so I’d get myself into trouble by assuming how things (like arrays for example) would behave.
Recently, I decided to have another go at it – this time creating a Breakout clone using C#. And this second time around, I was already familiar with the Unity Editor, and had basic knowledge of how Unity’s Entity-Component-System-But-Not-Really works. I got the game working really quickly, and surprised myself at being able to create a level editor (by importing Tiled maps) with a trivial amount of effort.
Now I’m working on a point-and-click sci-fi adventure game – something original for a change. But I still remember how disheartened I felt that first time around.
The path to success is rarely a straight line. Nothing you ever learn is wasted – it might subconsciously inform your decisions, or directly inform your actions later. You can’t predict the future. Don’t be down on yourself if you don’t get it right the first time.