一、UnityScript(为了方便与javaScript区别,下面简称为US)
1. 现在大家都以为是JS,其实两者只是后缀名相同
2. UnityScript之于Unity,相当于C#之于.NET
3. 它脱胎于Boo,与Boo有相同的语义,只是语法不同,编译器只需要解析语法,再交给Boo编译器就行了,事实上确实是这么做的。
4. 是静态语言,需要编译,不是脚本语言
二、Boo
1. 像脚本语言,是.net的第三方语言。
2. 很多特性受到了Python语言的影响,但Python是动态的,Boo是静态的。
3. 有编译器将它编译成CIL
4. 使用的人非常少,因为其实是为UnityScript服务的。
三、c#
1. 编译语言而非脚本语言(脚本语言是动态的),所以速度快
2. US适合个人开发,开发速度快,c#适合公司开发,严谨
3. 虽然US和C#都会被处理成CIL来运行,但是生成的CIL有区别,因为US存在var和object之间的频繁拆箱装箱,非常影响速度。
4. US脱胎于Boo,而Boo是.NET的第三方语言,但是C#是“正室”,“侧室”当然比不上了。
5. 很多插件都是用C#写的,官方文档及例子也是最全面的,所以更推荐使用C#
四、US与JS的区别
1. JS只有对象,而没有类的概念,如果JS在运行过程中,类增加了某种功能,那么对象也有该功能,而US是有类的概念的,在运行时,类不能改变。
2. 比如JS与文件名无关,但是US的文件名其实就是类名
3. JS和其他语言一样,一次能声明多个变量,但是US不能
4. JS在执行时会默认每行后面没有分号的加分号,而US则强制程序员自己写分号。
5. 语法差异1,US中赋值表达式不能作为另一个赋值表达式的被赋的值如y=(x=x+2),但JS可以
6. 语法差异2,JS中允许变量不带var声明,表示全局变量,但是US中每个变量必须声明才能使用
7. US是静态语言,编译语言,JS是脚本语言,动态语言(可能是最大的区别吧)