1、Mono:
.net是微软出的标准,受到了大量开发者的推崇·,但只有Windows上才能运行.net标准的代码,因为其他如Linux之类的机器上没有相应的基础库和相关的执行文件来解析这种标准下的东西。所以,就产生了Mono。站在Mono的角度来说,这套标准能规定编译器产生一些符合一定条件的文件出来,这些中间文件最后在目标平台上被解析成跟机器相关的东西。问题是,开始。Mono的目标是在尽可能多的平台上使.net标准的东西能正常运行的一套工具,叫framework也好,叫库也好,核心在于“跨平台的让.net代码能运行起来“。
想法很美好,现实很骨感,因为开源所以没有收益,养不起专职开发人员,发展就很慢。其中有几个核心人员说,我们花费了这么多时间精力,我们成立个公司赚钱吧,于是有了Xamarin。
2、Xamarin:
Xamarin可以看做Mono的商业版,很多Mono做不到的东西Xamarin做到了!以前Xamarin跨平台开发IDE是收费的很贵,但是个人感觉Xamarin用户少,团队快活不下去了(可能是我身处中国的错觉?),2016年微软收购了Xamarin,Xamarin抱上了微软爸爸的大腿,倒不是说微软技术牛逼,只是因为微软有钱!从2016年开始Xamarin免费了。xamarin是不是会变成开源的?这个就不知道了...(说一句题外话,不要老观点以为投靠微软就会封闭,微软也越来越开源了,比如新的.net core)。
2、Unity:
这是一个3D引擎,用来给行业(游戏、教育、仿真等需要大量使用三维数字表现的地方)快速的制作互动式的3D数字产品(主要是3d游戏)的工具。在用到编程的地方,Unity采用C#、JavaScript(官方可能叫UnityScript)、Boo,这些语言的编译支持需要上面的Mono的支持。Unity默认的开发IDE,也是Mono提供的MonoDevelop。
Unity的跨平台能力,主要是架构在Mono这个基础上。微软的.Net目前更新迭代速度非常之快,像Unity这样的多个平台关注的引擎,有些跟不上微软的脚步啊。不像Xamarin混的不是很好,Unity发展的非常好,unity也在向底层延伸,使用可以脱离Mono底层的支持(使用C++)。感觉就像孩子长大了,独立置业了。