Unity3D工具、Mono工具、内部脚本工作原理以及跨平台特性
1、几个概念的理解:
Unity3D主要包括两个部分:Unity Engine和Unity Editor。提供了UnityEngine.dll和UnityEditor.dll两个动态库。
Unity Engine:C/C++编写,由平台相关代码,图形API、物理引擎、灯光、网络层接口等组成,编译为UnityEngine.dll,各平台不同,用户Shader代码也属于这一层的内容;
Unity Editor:IDE工具,大部分是由C#编写,插件也是用C#编写(调用UnityEditor.dll开发),用户脚本可用C#/JS/Boo编写,项目代码最后由Mono编译;
Mono运行环境:Novell公司开发的跨平台·NET运行环境。功能是编译工程以及提供不同平台的CLR运行时。对于Android平台,首先编译输出为dll(即IL),游戏启动时Mono运行时再将用户dll和UnityEngine.dll等编译为JIT格式运行;对于IOS平台,由于不允许运行时生成Native Code,只能一次性将UnityEngine.dll和用户脚本等编译为Full AOT格式存储。
JIT(Just-in-Time compilation,即时编译)
AOT(Ahead-of-Time,提前编译或静态编译)
上面说了,在IOS平台,不能再运行时生成Native code,为了绕过苹果公司的这个机制,可以使用Lua语言来实现热更新。
2、Uni