很久没写新随笔了,实在很内疚,最近为了工作在学习unity,发现Unity实在是个好东西,普通的程序员自学一段时间就可以很快做成游戏DEMO,可以说,Unity和Unreal3是当前在国内最热的两款游戏引擎,特别因为Unity的跨平台编译,使得Unity做的3D手机游戏基本占领了移动市场。
unity可以使用C#、Javascript、Boo(类似Python)三种语言跨平台编译(Windows、Linux、Unix、Android、iOS),看到这里的读者一定和我当初一样好奇,三门语法差异之大、运行环境如此不同的语言(且不常使用来制作游戏,常用的是LUA、Python)竟然能同样为这么多架构都不同的平台服务,由于这学期有学习过编译原理,所以理解起来并没有那么困难,下面就分享下我这一早上的研究成果:
期中使用了两个大型的开源项目:Mono和Boo,Mono项目允许跨平台的.net的框架,既允许将C#编译成以上平台的机器码,Boo项目(作者Rodrigo Barreto de Oliveira,分为Boo和Javascript两部分),作者不但开发了可以在.net上运行的Boo语言(与作者狂爱Python有关),还写了一个Javascript JIT,这是基于EMAC标准 写的一个松散型Javascript,写惯了Mozilla Javascript的人可能会不适应,总之这位大牛使得Boo、Javascript可以在.net框架下编译、运行了。
正是把这两个开源项目创造性地结合,使得Unity获得如此优秀的能力(多语言、跨平台),写这篇文章的目的一方面是想帮助有同样疑惑的朋友打通Unity脚本到实现这一脉络,对Unity有更深的理解,更大的原因最近在看《三傻大闹宝莱坞》,突然有了一丝丝感悟:我们学软件的不能死记硬背每个工具(语言、软件、方法)的用法,而是要深刻理解这项工具的本质,这样你就可以无拘无束的使用这个工具,达到减少开发周期的目的,有点像武侠小说“忘记招式”的境界。