关于Mono和ILmCPP一直没弄懂

unity3d中ScriptingBackend选择mono和il2cpp的区别

unity scripting backend_unity

        IL2CPP(C++ 的中间语言)是 Unity 开发的脚本后端,您可以在为各种平台构建项目时将其用作 Mono 的替代方案。IL2CPP(一种提前 (AOT) 编译器)支持以与 Mono 脚本后端相同的方式调试托管代码。

        使用 IL2CPP 构建项目时,Unity 将 IL 代码从脚本和程序集转换为 C++,然后为您选择的平台创建本机二进制文件(例如.exe、apk、.xap)。IL2CPP 的一些用途包括提高 Unity 项目的性能、安全性和平台兼容性。

 

        每个脚本后端都有优点和缺点,这些优点和缺点应该会影响您决定哪个是适合您的情况的正确选择:

IL2CPP:

  • 与 Mono 相比,代码生成有了很大改进。
  • 从上到下调试 C++ 中的脚本代码是可能的。
  • 您可以启用引擎代码剥离以减少代码大小。
  • 构建时间比 Mono 长。
  • 仅支持 Ahead of Time (AOT) 编译。

单核细胞增多症:

  • 比 IL2CPP 更快的构建时间。
  • 由于即时编译 (JIT),支持更多托管库。
  • 支持运行时代码执行。
  • 必须交付托管程序集(mono 或 .net 生成的 .dll 文件)。

官方文档:Memory Management in Unity - Unity Learn

unity scripting backend_迭代_02

 总结:


每个脚本后端都有优点和缺点,这些优点和缺点应该会影响您决定哪个是适合您的情况的正确选择:





IL2CPP



  • 与 Mono 相比,代码生成有了很大改进。
  • 从上到下调试 C++ 中的脚本代码是可能的。
  • 您可以启用 引擎代码剥离以减少代码大小。
  • 构建时间比 Mono 长。
  • 仅支持 Ahead of Time  (AOT)编译。

Mono



  • 比 IL2CPP 更快的构建时间。
  • 由于 即时编译(JIT),支持更多托管库。
  • 支持运行时代码执行。
  • 必须发布托管程序集(由 mono 或 .net生成的 .dll文件)。



提示:您应该使用 IL2CPP 来开发和发布您的项目。如果使用 IL2CPP 导致迭代时间太慢,请在开发期间暂时切换到 Mono Scripting Backend 以提高迭代速度。