[转载]Unity用户手册-IL2CPP

IL2CPP是Unity的一种技术,它将C#代码编译为C++,以提高游戏在不同平台上的性能。AOT编译器处理.NET的IL代码,减少内存占用,而运行时库提供垃圾回收和平台抽象服务。Unity通过多步骤将C#转换为可执行文件,包括代码编译、去除未使用部分、转换为C++和最终链接。

什么是IL2CPP?

从技术层面上来说,我们说的IL2CPP包含了两部分:
  • 一个进行 预先编译的编译器(译注:ahead-of-time,又叫AOT,以下一律使用AOT缩写)
  • 另外一个部分就是对虚拟机提供支持的运行时库。
AOT编译器将由.NET 输出的中间语言(IL)代码生成为C++代码。
运行时库则提供诸如垃圾回收,与平台无关的线程,IO以及内部调用(C++原生代码直接访问托管代码结构)这样的服务和抽象层。

IL2CPP如何工作?

开始构建时使用,Unity自动执行以下步骤:
  1. C#代码编译为常规.NET DLL(托管程序集)。
  2. 不属于脚本的所有托管程序集(如插件和基类库)由名为Unused Bytecode Stripper的Unity工具处理,该工具查找所有未使用的类和方法,并从这些DLL中删除它们(动态链接库)。此步骤显着减少了构建游戏的大小。
  3. 然后将所有托管程序集转换为标准C++代码。
  4. 生成的C++代码和IL2CPP的运行时库,使用编译器进行编译。
  5. 最后,代码链接到可执行文件。
本文经作者同意,转自知乎@鹅厂程序小哥(https://www.zhihu.com/people/tencentboy),原文链接(https://zhuanlan.zhihu.com/p/339380697)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值