一:前言
二:两种模式的介绍
ios:unity只有il2cpp模式的编译才支持64位系统,mono是不支持的,在快速开发阶段仍然支持Mono,但是不能再向Apple提交Mono(32位)的应用
苹果在2016年1月就要求所有新上架游戏必须支持64位架构,所以必须要选il2cpp
android:从2019年8月1日起,在Google Play上发布app必须支持64位体系。从2021年8月1日起,Google Play将停掉尚未支持64位体系的APP,在国内上架32位和64位都可以
WebGL和UWP:只支持IL2CPP
Mono和IL2CPP:浅谈Unity与.Net、Mono、IL2CPP
——Mono
Mono打包后会生成一堆dll,项目中的代码就包含在这些dll中。在运行程序时,会把它们都加载到Mono虚拟机中
——IL2CPP
使用IL2CPP方式打出的包是没有dll的,它将Mono虚拟机和Assembly-CSharp.dll动态链接库整合在了一起,放在了libil2cpp.so文件里
如果都没有被加密,用Mono打包的Unity游戏可以用assembly-csharp.dll文件反编译看到源代码。用IL2cpp打包的unity游戏却只能用il2cppdump运行libil2cpp.so和global-metadata.dat来模拟取得 dll,但是这个dll只有函数名和偏移地址
三:总结
建议使用IL2CPP的模式出包,但是因为IL2CPP比Mono多了一个转换代码为C++的过程,所以打包过程会很慢,可以在开发阶段使用Mono,出包时使用IL2CPP