Unity之IL2CPP

背景
在Unity4.6.1p5以后版本中,在PlayerSettings—>Other Settings—>Scripting Backend有mono和il2cpp两个选项,它们是Unity脚本后处理(Scripting Backend)的两种方式。

 

概念
IL2CPP 是 Unity一种新的脚本后处理(Scripting Backend)方式,针对.Net平台编译输出的IL(中间语言)进行处理。

IL2CPP主要由两部分组成:

AOT静态编译编译器(il2cpp.exe)
运行时库(libil2cpp)
其中AOT将 IL转换为C++源码,再交给各平台的C++编译器进行编译,达到平台兼容的目的;运行时库则会提供诸如 垃圾回收、线程/文件获取、内部调用直接修改托管数据结构的原生代码 的服务与抽象。

IL2CPP脚本后处理技术示例图:

 

 

 

 

对比
Mono
构建应用非常快
由于Mono的JIT(Just In Time compilation ) 机制, 所以支持更多托管类库
支持运行时代码执行
必须将代码发布成托管程序集(.dll 文件 , 由mono或者.net 生成 )
Mono VM在各个平台移植异常麻烦,有几个平台就得移植几个VM(WebGL和UWP这两个平台只支持 IL2CPP)
Mono版本授权受限,C#很多新特性无法使用
iOS仍然支持Mono , 但是不再允许Mono(32位)应用提交到Apple Store


IL2CPP
相比Mono, 代码生成有很大的提高
可以调试生成的C ++代码
可以启用引擎代码剥离(Engine code stripping)来减少代码的大小
程序的运行效率比Mono高,运行速度快
多平台移植非常方便
相比Mono构建应用慢
只支持AOT(Ahead of Time)编译

 

 


 

总结
IL2CPP比较适合开发和发布项目 ,但是为了提高版本迭代速度,可以在开发期间切换到Mono模式(构建应用快)。


————————————————

posted @   Domefy  阅读(959)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示