什么是C#
C#是一种面向对象的编程语言。
什么是.NET
.NET是一个开发框架,它遵循并采用CIL(Common Intermediate Language)和CLR(Common Language Runtime)两种约定,
CIL标准为一种编译标准:将不同编程语言(C#, JS, VB等)使用各自的编译器,按照统一的标准编译成语义一致的CIL中间码, 这样虽然代码使用的语言不同,但编译出的产物是一样的。
CLR标准为一种执行标准:不同的操作系统可以根据CLR这一执行标准开发出自己平台的中间码执行器,这样CIL这个标准中间产物就可以在不同的平台执行了。其中Mono框架就扮演了这样一个重要的角色,实现了各个平台的CLR执行器。

什么是Mono
Mono是一个框架,它是.NET这个开源框架的子集,它建立在.NET框架基础上,在使用.NET基础能力的基础上,自己做了多各个操作系统的CLR实现来实现跨平台。同时也重写了一些.NET框架中的基本功能。
Unity是什么
Unity是一个游戏开发框架,框架的各种库是使用C#来实现。
Unity 引擎的外层是用C#实现,内部则是对 C/C++ 做直接调用。它的内部是用原生 C/C++ 构建的。
Unity与Mono之间的关系
使用Unity做游戏脚本开发,脚本编写好后,使用Mono将C#代码编译成CIL标准中间码,再使用Mono的跨平台能力将编写的CIL运行到各个目标平台上,比如运行到iOS,安卓手机上。
如何看待.NET Framework,Mono和.NET Core
随着微软对.NET框架的开源,现在在.NET的实现上有了三个.NET Framework,Mono和.NET Core。
.NET Core是一个模块化的开发栈,它提供了框架的基础能力,包含跨平台,它是未来的所有.NET平台的基础。
.NET Framework可以看做是.NET Core在Windows上的一个发行版,Mono可以看做是.NET Core的一个跨平台发行版。
随着.NET Core Framework的开发完成,.NET Framework与Mono将基于.NET Core重新构建。
.NET框架
.NET是一个框架,它具有跨语言,跨平台的特性。
.NET通过将各语言先编译成中间语言(IL),然后再执行时用即时(Just In Time)编译器将之编译成本地平台代码来实现异构平台下对象的互操作,.NET通过公共语言运行库CR(Common Language Runtime)来实现资源对象,类型的安全。
.NET有很多种语言组成,比如C#、 VB.NET、J#、JS、 C++,它们的编译产物都是运行在.NET FrameWork Run Time之上的。其中,C#是主流。
C#源码编译流程
C#源代码在.NET程序的编译中,代码编译会生成exe公共中间语言文件。
C#源代码Unity和这个很相似,代码会被编译成dll公共中间语言文件。
它的编译过程如下:
源代码.cs - CLS编译(公共语言标准)- 通用中间语言(exe, Unity中编译成dll格式)-CLR编译- 机器码
.NET框架可以支持多种语言,那么在一个项目中同时存在这么多语言,它们如何通信呢?
1.首先将它们各自编译成通用中间语言
2.再使用通用中间语言进行互相调用。
这样做的目的:跨语言
3.点击exe, 系统会调用CLR编译(目的是优化,跨平台,一个exe可以编译成多个window平台,甚至编译成Linux系统)进行即时编译,生成01二进制
4.unity的跨平台是重写了CLR(公共语言运行库)编译,可以编译成java,android(需要编译成哪种平台,就拿哪种平台的CLR,这样对应的系统就可以识别,来实现跨平台)多种平台的01机器码
参考文章
https://blog.51cto.com/u_16099186/6280958
https://zhuanlan.zhihu.com/p/266037775
https://www.cnblogs.com/shanyou/p/4295163.html
 
 

Unity框架与.NET, Mono框架的关系的更多相关文章

  1. JSBinding+Bridge.Net:框架代码与逻辑代码的关系

    在JSB+Bridge工程中你可以同时维护Cs版本和Js版本的游戏. 框架代码:简称framework,表示那些不进行热更的代码.注意,这包括你自己写的代码,也包括引用的Dll,比如UnityEngi ...

  2. (五):C++分布式实时应用框架——支撑复杂的业务通讯关系

    C++分布式实时应用框架--支撑复杂的业务通讯关系 技术交流合作QQ群:436466587 欢迎讨论交流 版权声明:本文版权及所用技术归属smartguys团队所有,对于抄袭,非经同意转载等行为保留法 ...

  3. VS2010/MFC编程入门之四十(文档、视图和框架:各对象之间的关系)

    前面一节中鸡啄米进行了文档.视图和框架的概述,本节主要讲解文档.视图.框架结构中各对象之间的关系. 各个对象之间的关系 文档.视图.框架结构中涉及到的对象主要有:应用程序对象.文档模板对象.文档对象. ...

  4. unity游戏开发之entitas框架

    框架介绍 entitas是一个超快.超轻量的c# Entity-Component-System (ECS)框架,专门为Unity引擎设计.提供内部缓存和高速的组件访问,经过精心设计,可以在垃圾收集环 ...

  5. 《Unity 3D游戏客户端基础框架》概述

    框架概述: 做了那么久的业务开发,也做了一年多的核心战斗开发,最近想着自己倒腾一套游戏框架,当然暂不涉及核心玩法类型和战斗框架,核心战斗的设计要根据具体的游戏类型而定制,这里只是一些通用的基础系统的框 ...

  6. VS2010-MFC(文档、视图和框架:各对象之间的关系)

    转自:http://www.jizhuomi.com/software/223.html 前面一节进行了文档.视图和框架的概述,本节主要讲解文档.视图.框架结构中各对象之间的关系. 各个对象之间的关系 ...

  7. 面向接口可扩展框架之“Mvc扩展框架及DI”

    面向接口可扩展框架之“Mvc扩展框架及DI” 标题“Mvc扩展框架及DI”有点绕口,我也想不出好的命名,因为这个内容很杂,涉及多个模块,但在日常开发又密不可分 首先说Mvc扩展框架,该Mvc扩展就是把 ...

  8. 关于 Unity 项目中的 Mono 堆内存泄露

    关于 Unity 项目中的 Mono 堆内存泄露 题记:这是补一篇应该在将近一年前就应该写的记录,今天终于补上. 内存泄露是一个老话题了,之前我专门写过一篇 排查 Lua 虚拟机内存泄露 的文章,并且 ...

  9. .net core .NET Core与.NET Framework、Mono之间的关系

    .NET Core与.NET Framework.Mono之间的关系 首先想要知道.NET Core与.NET Framework.Mono之间的关系,就必须他们分别是什么,有什么用途? 一. .ne ...

  10. Linux驱动框架之framebuffer驱动框架

    1.什么是framebuffer? (1)framebuffer帧缓冲(一屏幕数据)(简称fb)是linux内核中虚拟出的一个设备,framebuffer向应用层提供一个统一标准接口的显示设备.帧缓冲 ...

随机推荐

  1. .NET应用系统的国际化-基于Roslyn抽取词条、更新代码

    上篇文章我们介绍了 VUE+.NET应用系统的国际化-多语言词条服务 系统国际化改造整体设计思路如下: 提供一个工具,识别前后端代码中的中文,形成多语言词条,按语言.界面.模块统一管理多有的多语言词条 ...

  2. consumer goods cloud 之后续慢慢看系列

    继之前的内容和帮助文档之外,整理一些其他有用的CG资源,有时间可以深入学习一下. 零售执行: https://rise.articulate.com/share/R9_PIF3mcNMuAi4iUtA ...

  3. 深入理解 Python 虚拟机:字典(dict)的优化

    深入理解 Python 虚拟机:字典(dict)的优化 在前面的文章当中我们讨论的是 python3 当中早期的内嵌数据结构字典的实现,在本篇文章当中主要介绍在后续对于字典的内存优化. 字典优化 在前 ...

  4. ACM-学习记录-DP-1

    DPL_1_A: Coin Changing Problem 每次均有两种选择,即选择当前的,即为在当前状态+1,否则维持原来的T[j+d[i]] #include<iostream> # ...

  5. 鼎捷ERP二次开发教程 Tiptop GP开发资料大全 Tipto开发实战经验 鼎捷开发实战例子 Tiptop GP二次开发项目例子 4GL开发Demo 鼎捷二次开发完整例子 鼎捷ERP二次开发入门

    本人在ERP实施公司做顾问四五年,参与企业实施ERP十多个项目,非常熟悉企业ERP流程,在实施过程遇到众多问题,提出了不少根据企业具体情况的解决方案. 曾经参与鼎捷Tiptop GP实施十多个项目,具 ...

  6. group_concat_max_len设置过小致group_concat()排列不全

    问题描述:group_concat_max_len默认值1024导致group_concat函数排列显示不足 group_concat_max_len长度显示跟group_concat排列长度息息相关 ...

  7. jquery 禁用按钮无效 disabled属性设置无效

    禁用按鈕 $(this).prop("disabled", true); 啟用按鈕 $(this).prop("disabled", false); 禁用按鈕 ...

  8. 一文讲透产品经理如何用好ChatGPT

    作者:京东零售 何雨航 "4.0版本的ChatGPT可以有效提升产品经理工作效率,但并无法替代产品经理的角色." 一.引言 3月15日,OpenAI发布了最新的基于GPT-4的Ch ...

  9. ArcGIS Desktop发布地形高程服务(DEM/DSM)

    在做ArcGIS三维时,地形服务的发布与普通地图服务的发布不一样,需要发布成ImageServer,切片格式选择LERC. 本文示例使用软件: ArcGIS Desktop10.3.1 注:ArcGI ...

  10. Gusfield算法学习

    算法详解 等价流树正如其名,树上两点间的路径上的边权最小值为图上两点间的最小割. Gusfield算法就是建等价流树的一种算法.设当前正在处理的集合为 \(S(|S|\ge 2)\),从 \(S\) ...