一、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是脚本语言,动态语言(可能是最大的区别吧)