目录
Mono
1. Unity 和 Mono 的关系
2. Unity 跨平台的必备概念
2.1 Unity 的组成
编写;早期支持 C#/JavaScript/Boo;项目代码最终由 Mono 编译。
2.2 回顾 Mono 的跨平台原理
2.3 Mono 的主要构成
3. Unity 跨平台的基本原理(Mono)
4. 基于 Mono 跨平台的优缺点
5. 与 .NET 生态的关系(对齐概念)
IL2CPP
Mono
1. Unity 和 Mono 的关系
- Unity 背景:Unity 公司成立于 2004 年,引擎底层主要由
C/C++ 实现。
- 选择 Mono 的原因:为降低上层逻辑开发门槛、扩大开发者群,Unity
采用 Mono 作为上层脚本环境;Mono 同时具备 跨平台 与
跨语言 特性,契合"一次开发,多平台运行"的目标。
2. Unity 跨平台的必备概念
2.1 Unity 的组成
- Unity Engine(引擎):提供 UnityEngine.dll;C/C++
编写,含平台相关代码、图形 API、物理、灯光等底层能力。
- Unity Editor(编辑器):提供 UnityEditor.dll;主要 C#
编写;早期支持 C#/JavaScript/Boo;项目代码最终由 Mono 编译。
2.2 回顾 Mono 的跨平台原理
- 基于 CLI 统一中间语言 CIL,再用 CLR/Mono VM 将 CIL
转为目标 OS 的原生代码运行。
2.3 Mono 的主要构成
- C# 编译器(mcs);Mono Runtime(虚拟机):含
JIT、AOT、GC、类库加载器;BCL 基础类库;Mono
类库(扩展功能用于不同 OS 应用构建)。
3. Unity 跨平台的基本原理(Mono)
- 在 Unity 下使用多种语言实现逻辑,发布时编译为 IL;在对应 OS
上通过 Mono VM 把 IL 翻译为机器码并运行。
图 1:Unity + Mono 执行流程

4. 基于 Mono 跨平台的优缺点
- 优点:只要在不同 OS 上实现 Mono VM,理论上可支持的平台
非常多(接近"无限")。
- 缺点(补充说明):
- 维护成本:Unity 升级需跟进 Mono 运行时与类库兼容;
- 特性滞后:旧版 Mono 可能不支持最新 C#
语法/运行时能力(在工程中需注意 API/编译目标选择)。
5. 与 .NET 生态的关系(对齐概念)
- .NET Framework(2002):Windows 为主。
- Mono(2004):开源、跨平台,早期/至今都是 .NET
的跨平台方案之一。
- .NET Core(2016):官方跨平台实现,后统一为现代 .NET。
图 2:Unity 组件与 Mono 的位置关系

IL2CPP
本文作者:xuxuxuJS
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA
许可协议。转载请注明出处!