Mono 升级细节        

在 Unity 3 版本中,我们将 mono 运行从 1.2.5 升级至 2.6。在此基础之上,还有一些 JavaScript 和 Boo 改进。除了修复所有错误并对两个版本的 mono 进行改进之外,本页还列出了一些重点内容。

C# 改进

C# 3.5 和 C# 2.0 之间的区别基本包括:

  • 变量类型推断。如需更多信息,请点击此处。

  • Linq。

  • Lambdas。如需更多信息,请点击此处。

JavaScript 改进

  • 编译器现在加快了 4 倍。

  • “extends”不再用于接口,unity 脚本现有“执行 (implements)”用于该目的(如下);

  • 新增消耗泛型类型支持,如泛型集合:

var list = new System.Collections.Generic.List.<String>();list.Add("foo");
  • 新增匿名函数/封闭支持:

list.Sort(function(x:String, y:String) {return x.CompareTo(y);});
  • 其中包含带参数类型推断和返回值的简单 lambda 表达式:

list.Sort(function(x, y) x.CompareTo(y));
  • 函数类型:

function forEach(items, action: function(Object)) {for (var item in items) action(item);}
  • 类型推断的 javascript 数组推导式:

function printArray(a: int[]) {print("[" + String.Join(", ", [i.ToString() for (i in a)]) + "]");}var doubles = [i*2 for (i in range(0, 3))];var odds = [i for (i in range(0, 6)) if (i % 2 != 0)];printArray(doubles);printArray(odds);
  • 新增说明和执行接口支持:

interface IFoo {function bar();}class Foo implements IFoo {function bar() {Console.WriteLine("Foo.bar");}}
  • 所有函数都是隐式的虚函数,因而 “virtual” 这个关键字已被弃用,而引入 “final” 这个关键字,允许非虚拟方法定义为:

final function foo() {}
  • 值类型(结构)可以定义为类,从 System.ValueType 继承:

class Pair extends System.ValueType {var First: Object;var Second: Object;function Pair(fst, snd) {First = fst;Second = snd;}override function ToString() {return "Pair(" + First + ", " + Second + ")";}}

Boo 改进

  • Boo 升级至 0.9.4 版本。

,