9. Mono项目与Unity的关系

1.Mono项目简介

2.Mono项目与Unity是如何结合的

3.从Mono到IL2CPP演变过程


1.Mono项目简介

csharp 复制代码
1).定义

   Mono是一个自由、开源的项目, 由Xamarin现属于微软主导开发; 它的目标是创建一个一套
 
   兼容于微软.NET Framework 的跨平台工具
   
2).核心功能

   a.C#编译器
  
     能将你写的C#代码编译成IL(中间语言)代码

   b.CLR(公共语言运行时)
 
     它负责在执行时再将IL代码即时编译(JIT Compilation)或提前编译(AOT 

     Compilation)成目标平台(如 Windows, macOS, Android, iOS)的本地机器码,

     并管理内存、垃圾回收、线程等

2.Mono项目与Unity是如何结合的

csharp 复制代码
Unity引擎本身是用C++ 编写的, 性能极高, 但直接使用 C++ 进行游戏逻辑开发对开发者

来说门槛较高, 不够灵活; 于是, Unity做了一个非常聪明的决定:引入Mono作为其脚本层的石

1).脚本语言

   Unity选择C#作为其主要脚本语言, 而Mono提供了C#编译器和运行时环境, 完美契合
 
2).运行脚本

   当你写了一个C#脚本例如 PlayerController.cs并挂载到游戏对象上后

   a.编译, Unity使用Mono的编译器将你的C#代码编译成IL(中间语言)字节码(存储在程序集

     中)

   b.执行, 在游戏运行时, Mono运行时(Mono Runtime)被嵌入到Unity引擎中; 这个运

     行时负责加载并执行编译好的IL代码

   c.与引擎交互, 你的C#脚本通过调用GetComponent<Rigidbody>()等方法与底层的C++

     引擎核心进行通信, Mono在这里充当了桥梁的角色, 让托管代码(c#)和本地代码(C++)
      
     能够安全、高效地交互。

3.从Mono到IL2CPP演变过程

csharp 复制代码
随着时代发展, Unity发现传统的Mono在某些方面存在局限性, 尤其是在性能和平台限制(如 

iOS平台不允许JIT 编译上; 因此, Unity开发了IL2CPP技术

1).IL2CPP(Intermediate Language to C++)

   a.它取代了Mono运行时中的JIT/AOT编译部分

   b.工作流程, 你的C#代码 -> 被Mono编译器编译成IL -> IL2CPP再将IL字节码翻译成标

     准的C++代码 -> 最后使用各平台原生的C++编译器如 Visual Studio, Xcode)编译

     成高效的原生机器码
     
2).现状

   a.Mono仍然是Unity脚本编译过程(从C#到IL)的核心, 并且在许多平台(如 Windows、
 
     macOS 的编辑器模式和独立平台)上仍作为运行时

   b.IL2CPP则主要负责在构建(Build)时, 特别是在需要高性能和特定平台限制(如 iOS, 
 
     WebGL, 以及大多数主机平台)时, 将IL代码转换为C++/原生代码
相关推荐
叶帆14 天前
【YFIOs】用C#开发硬件之设备上云
开发语言·unity·c#
久数君14 天前
AI三维建模工具“造形家”:地理场景三维化的高效解决方案
unity·glb·ai算法·ai三维建模工具·地图框选·造形家·城市建筑模型
会思考的猴子14 天前
Unity VFX 属性 Postion 和 TargetPostion
unity
心前阳光15 天前
Unity资源导入之自动化资源导入
unity·自动化·游戏引擎
心前阳光15 天前
Unity之2021.3.45f2c1发布安卓程序遇到的问题
android·unity·游戏引擎
纪纯15 天前
PicoVR Unity Integration SDK 3.4 常用交互API
unity·游戏引擎·vr·pico
龙智DevSecOps解决方案15 天前
3A 游戏优化技术栈:如何打通引擎级分析工具与 DevOps 持续集成管线?
unity·性能优化·游戏开发·技术美术·perforce·unrealengine
葛兰岱尔15 天前
从 SolidWorks 到 Three.js,从 Inventor 到 Unity——制造业CAD模型“几何-语义一体化“转换,不再是天方夜谭!
开发语言·javascript·unity
玉夏15 天前
【Shader基础】UV 与纹理采样 Part1
unity·着色器·uv
zdr尽职尽责15 天前
Unity录像功能
学习·ui·unity·游戏引擎