Files

12 lines
1.5 KiB
Markdown
Raw Permalink Normal View History

2026-05-03 14:06:26 +08:00
![[deepseek_mermaid_20260204_d63c65.png]]
.net平台从最开始是使用的.net framework,它可以跨语言但是不能跨平台,后面第三方提出了mono的解决方案,可以给.net framework用来跨平台,但这是第三方的解决方案。后面微软自己推出了.net core,作为官方的,开源的,跨平台的解决方案。后面在2020年,提出了统一的.net 5,她统一了所有的平台,包括.net frame和.net core。这是.net的生态发展史。
下面我们讲讲mono和IL2CPP两种跨平台的方式。
mono的工作流程是
monoC#代码->IL代码->CLR运行时JIT计时编译为机器码从而运行。
IL2CPP:C#代码->IL代码->C++代码->本地编译C++代码为机器码->运行。
区别就在于对于IL代码的处理,IL2CPP是AOT提前编译,提前就处理好代码,最终打包出去的,只有原生机器码,没有任何其他代码。
mono的话,打包出去的还存储这IL代码,在运行时会有一个虚拟机去编译IL代码为机器码去运行。
还有一个问题:Unity怎么知道我们的游戏需要打包到那个平台,从而调用该平台的C++编译器来编译c++代码让我们可以使用呢?
Unity本身并不提供所有的C++编译器,而是我们在打包不同平台的时候,比如Android需要安装NDK,打包windows需要安装vs等等,在这里我们就可以使用这些工具的C++编译器来帮助我们进行编译。所以开发的时候要提前在build里面选好平台