关键词
- .NET mono 虚拟机
- IL2CPP
为什么选择 mono
Mono 是一个开源的 .NET 框架的实现,它可以在 Linux、Mac、Windows 等平台上运行,而且可以在这些平台上编译出可执行文件。
开源、跨平台、Mono的开发工具( MonoDevelop 现在已被弃用)
为什么推出 IL2CPP
- Mono 没有合法身份, 微软收购之后的版权问题
- Mono 虚拟机 解释执行 .NET 字节码,效率低
- 有些平台不允许内置 .net 虚拟机 (eg. iOS)
- 如果有新的平台出现,Mono 难以为其提供支持(跨不了平台咯),移植很麻烦(eg. WebGL)
IL: Intermediate Language .NET框架中间语言, .NET字节码
IL2CPP: IL to C++,将IL转换为C++代码 --> 编译为可执行文件 --> native platform
Unity:
- Unity C/C++ 以及 native 的开发 --> 跨平台的 runtime (xcode, android studio)
- Unity 开发者脚本语言(C#) --> .NET字节码 --> .dll --> IL code --> IL2CPP --> C++
- C# GC --> c++ 为其提供支持
IL2CPP vm:支持 C# .NET 独有的特性,如反射,泛型,委托,lambda表达式等
IL2CPP 做了什么?有什么优势?
- 跨平台可以执行问题 --> Unity -->> 移植 IL2CPP --> .NET 版本问题
- 性能获得提升 --> 基于 IL2CPP 发布(而不是 Mono)