记录一下Unity中的IL2CPP(就是把IL语言转换为CPP格式c++后跨平台的性能更强了)
由于Mono的一些不足而引发出了一种新的解决方案:IL2CPP,在得到中间语言IL后,使用IL2CPP将他们重新变回C++代码,然后再由各个平台的C++编译器直接编译成能执行的机器码。 IL2CPP很好理解她的含义:将IL代码转换成CPP文件。 现在的大趋势都是把语言加上动态特性,哪怕是C++这样的静态语言,也出现了适合IL的C++编译 器,那为什么Unity要把IL再转回静态的CPP呢?原因如下: ——Mono VM在各个平台移植,维护非常耗时,有时甚至不可能完成。 Mono的跨平台是通过Mono VM实现的,有几个平台,就要实现几个VM,像Unity这样支持多平台的引擎,Mono官方的VM肯定是不能满足需求的。所以针对不同的新平台,Unity的项目组就要把VM给移植一遍,同时解决VM里面发现的bug,这非常耗时耗力。而且有些平台无法进行移植。 因为Mono的授权受限,Unity无法升级Mono版本导致一些新的C#特性无法使用,如果换作是IL2CPP,IL2CPP VM这套完全自己开发的组件,就解决了这个问题