Unity跨平台的基本原理(Mono)

Unity的底层是通过C/C++来完成,Mono同时具备了跨平台的和跨语言两个特性。

利用Mono实现Unity上层逻辑的跨语言和跨平台

Unity主要包括两个部分

  1. Unity Engine:提供UnityEngine.dll动态库,各平台有所不同,C/C++编写,包含平台相关代码、图形API、物理引擎、灯光等所有游戏引擎底层内容
  2. Unity Editor:提供UnityEditor.dll动态库,大部分由C#编写,用户脚本最初可以使用C#、JavaScript、Boo语言编写,项目代码最后由Mono编译

Mono跨平台的基本原理:

        Mono利用.Net平台制定的CLI公共语言基础结构规则,使得可以将多种语言编译成通用规范的CIL公共中间语言,通过CLR将这些CIL转换为对应操作系统的原生代码。这样用各种语言编写的逻辑就能在指定操作系统上运行了

        将基于CLI公共语言基础规则的语言编译成CIL公共中间语言,再通过Mono 虚拟机将其在各操作系统中转译为原生机器码进行运行

Mono的主要构成:

  1. C#编译器(mcs)
  2. Mono Runtime 类似CLR(虚拟机)包括JIT(Just in time)即时编译器、AOT(Ahead of time)提前编译器、GC、类库加载器 等待
  3. BCL基础类库
  4. Mono类库

提供了很多超出.Net的一些额外功能,主要用于构建各种操作系统上的应用

在Unity中使用的各种语言进行逻辑实现,这些语言在发布时会被编译成IL中间代码,最终在对应操作系统上通过Mono 虚拟机翻译为机器码运行

优点:只要在不同操作系统上实现Mono虚拟机,那么就可以支持更多的平台

缺点:维护耗时,当Unity版本更新时,Mono 虚拟机也需要维护和更新,那对于多个平台来说,工作量很大。低版本Mono无法支持新版本C#的特性

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值