Unity 和Mono的关系

10 篇文章 0 订阅
1 篇文章 0 订阅

之前误解以为MonoBehaviour是Mono的东西,其实Mono打包之后才会体现出它的价值.
Mono是如何诞生的?
C#是如何被运行的?C#代码编写好之后被C#编译器编译成IL代码,然后IL代码被CLR运行时(JIT,AOT两种编译模式)编译成本机代码.但.net framework因为特定的依赖是能在windows上运行,于是Mono为了跨平台就诞生了.
.net .net framework CIL CLR CLI:.net是一个对一系列功能的期待,于是.net framework 是.net的实现. CIL,CLR,CLI都是属于.net framework
Unity是如何跨平台的?
mono就作为一个中间层将IL代码的处理分出好多个分支,分别对应不同的平台.Mono其实和.net framework 是同一个东西,只不过Mono支持更多的平台,但.net的运行效率更高
Unity打包时会将mono一同打包进来,同时Unity将脚本编译为IL代码打包,这样只要是Mono支持的平台,都可以在Mono中编译成平台本地代码
这是一个apk解压后的文件夹

所有在Unity中所用到的类库都在这里,比如你引用一个System就会把相关的类库加进来,Assembly-CSharp.dll这个文件放的是所有你编写的脚本,Mono或者叫Mono运行时就是上图的libmono.so会把下图所有类库都编译成本机代码,至于还有一个libunity.so估计是跟运行unity有关的把.

lib

中间代码可以实现平台无关性,即与特定CPU无关,只要把.NET框架某种语言编译成IL代码,就实现.NET框架中语言之间的交互操作(这就是为什么unity3D里面可以c#和js混编)

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值