unity的运行

 

 

unity程序的跨平台:

mono:

  存在的原因:

        mono VM或mono CLR(Common Language Runtime)跨平台

  什么是mono:

        mono出现前,.Net没能实现跨平台;mono遵循了IL规范 ,mono自己实现了各语言到IL的编译器,以及各平台运行的CLR;

        

        

   转向il2cpp原因:

      1.Mono VM在各个平台移植,维护非常耗时,有时甚至不可能完成
        Mono的跨平台是通过Mono VM实现的,有几个平台,就要实现几个VM,像Unity这样支持多平台的引擎,Mono官方的VM肯定是不能满足需求的。所以针对不同的新平 台,Unity的项目组就要把VM给移植一遍,同时解决VM里面发现的bug。这非常耗时                                 耗 力。这些能移植的平台还好说,还有比如WebGL这样基于浏览 器的平台。要让WebGL支持Mono的VM几乎是不可能的。
      2.Mono版本授权受限
            大家有没有意识到Mono的版本已经更新到3.X了,但是在Unity中,C#的运行时版本一直停留在2.8,这也是Unity社区开发者抱怨的最多一 条:很多C#的新特性无法使用。这是因为Mono 授权受限,导致Unity无法升级Mono。如果换做是IL2CPP,                                IL2CPP VM这套完全自己开发的组件,就解决了这个问题。
      3.提高运行效率
        根据官方的实验数据,换成IL2CPP以后,程序的运行效率有了1.5-2.0倍的提升。

  

il2cpp

 

PC平台脚本编译后端只能选择mono

  iOS必须il2cpp

  Android可选则mono或il2cpp

目前unity只有il2cpp模式的编译才支持64位系统,mono是不支持的。
苹果在2016年1月就要求所有新上架游戏必须支持64位架构,所以苹果平台打包必须要选il2cpp。

posted @ 2020-09-04 00:17  alps_01  阅读(434)  评论(0编辑  收藏  举报