Choosing to use C# instead of UnityScript
So why choose C# to create this code? This maybe after-the-fact information for you if you've already acquired this book and chosen to use C#, but these are valuable points to know anyway:
Reason 1 for choosing C# – vast amount of documentation on the Internet
Have a look at the following bullet list, it will help you understand the reason for choosing C#:
- C# is a well known and a heavily used programming language developed by Microsoft for creating Windows application and web-based applications. If you ever need to know anything about C#, simply do a search on the Internet.
- UnityScript is just a scripting language designed specifically for Unity. It's similar to JavaScript, yet it isn't. You may be able to search for JavaScript solutions on the web, but the code may or may not work within the confines of Unity without modification, if at all.
- Why start off learning a limited scripting language, specific only to Unity, when you can use C#, a true programming language, and find information everywhere?
- Who knows, once you see how easy C# is, maybe you might decide to develop for Windows or the Web some day. You'll already have the basics of C#.
- Once you learn C#, you'll pretty much know UnityScript, too.
Reason 2 for choosing C# – flexibility to use Unity scripts and regular C# code files
- Any C# files you have in your Unity Project folder, that are not Unity scripts, are accessible without the need of attach them to GameObjects.
- The State Machine project we will create for this book makes use of C# code files that are not attached to any GameObject.
- I'm not saying you can't create a State Machine by using UnityScript. It's just so much easier with C#. Every UnityScript file has to be attached to a GameObject to work and be accessible to other scripts. C# overcomes this necessity.
Reason 3 for choosing C# – coding rules are specific
- C# is known as a strictly-typed language. What does this means to you?
- As you write code, Unity will catch coding errors immediately. Learning a subject is always easier when the rules are specific, and not some fuzzy "you can if you want to" kind of logic.
- UnityScript is not a strictly-typed language. You have the potential to write code that is not valid, but Unity won't catch the errors until you press Play.
- Finding mistakes as you write the code is so much easier than having to deal with them when a user has found them when they're playing the game.
- Please be aware, it is easy to force UnityScript to be strictly-typed, but if you're going to do that, then you may as well be using C# anyway, which brings us back to Reason 1.