Unity中Mono和IL2CPP

Mono虚拟机:

Mono作为.Net平台的开源项目,支持Linux,Windows,Mac和Android。所以基于Mono开发的应用程序都是可以跨平台发布。其跨平台的特性也是Unity选择Mono的原因。

编译流程:

Unity编译打包时,使用C#编写的脚本会通过Mono的C#编译器打包成IL(中间语言),然后在Mono的虚拟机中运行。

IL的存在是为了兼容不同平台,因为在不同指令集在平台上执行同样的程序的机器语言并不相同,若打包的时候直接将程序翻译成机器语言,则出的包只能在指定平台运行,所以打包的时候先编译成IL,在不同的平台上使用Mono虚拟机(JIT)将IL翻译成对应平台的机器语言。

优点:

  • 构建速度快

  • 支持运行时代码执行

缺点:

  • 多平台移植麻烦。

  • 受限于Mono版本。

IL2CPP:

因为Mono官方的虚拟机并不能满足Unity多平台的需求,所以后来引入了IL2CPP。

IL2CPP主要由两部分组成:

  1. AOT:将IL转换成C++源码,然后通过不同平台的C++编译器编译,实现多平台兼容。

  1. 运行时库(libli2cpp):支持IL2CPP虚拟机运行,可以提供GC,线程获取,文件获取,内部调用直接修改托管堆数据结构的。

优点:

  • 运行效率快。

  • 方便多平台移植。

  • 可以在相应的平台使用C++编译器对编译器代码进行优化。

缺点:

  • 相对于Mono的构建速度慢。

  • 只支持AOT编译。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值