I know part of it is that I'm more VB.NET than C#/Java, so I'm having syntactical arguments, but still.
C# is superior
Sorry, had to get that out of my system. Though I'm sure it will recharge in the next 5 minutes.
I'm working through a copy of Unity 3x Game Development by Example - Beginner's Guide.
We didn't use any books (at least, I didn't) but from what you said it's helping, so that's good.
The GUI components alone are head-smacking in the thousands of small pieces to using it, and they're about as obvious as a cricket hiding under the desk. You know it's THERE... but WHERE?
Of the parts of Unity I've used extensively, the GUI part is the one I hate most. It's tenable enough that we used it, but the unfixable bugs just kept on coming up (largely related to textboxes, but also with display order and so on) and we almost completely removed all references to the GUI class in AVWW (and thus Valley2 and Shattered Haven; AIW hasn't been fully converted to use our new gui approach because it caused problems when we tried and we lacked time for that kind of brawl).
But that said, it is actually usable, if you're not too perfectionistic and are well practiced in the general form of "bang head against brick wall until it comes down", and if you've been programming that long I'm sure you're pretty good at that.
Unity also has the ability to port to phone app reasonably well from what I've read up on and said idea could be reasonably tweaked to an app... actually, it'd probably be BETTER as a portable app.
We've only used the PC support, Mac support, and web-browser support (for Tidalis Lite), but I have to say it's incredibly good. Not without some pain (Tidalis's release was our first official mac support, and there were some unity bugs that did awful things... but those bugs have been fixed since then, it was the late 2.x days for unity), and since Chris handled most/all of the porting itself I'm sure he's probably less unanimous in his praise for it... but all told, the porting
works, and it works well.
One thing to bear in mind when making inferences from our stuff is that we deviate
substantially from the path that Unity tries to guide you down usage-wise. I think the only GameObject's we use are:
- the camera MonoBehavior's themselves (and only one camera matters for what you see, iirc, at one point we toyed with an alternate camera for something but I'm not seeing it in the AIW code)
- the audio clip GameObject's
The graphics we handle entirely by lower-level calls (Graphics.DrawMeshNow and Graphics.DrawMesh, there was a substantial shift in what we did towards less batching, iirc, during the "Pony Incident" in AVWW's beta), since we aren't making 3D games, we're making 2D games. Structurally it's still polys and meshes and technically 3D, etc, but the overlying assumptions are very different.
But yes, we're nuts, it's the only way we stay
sanenuts