我在Visual Studio中使用Unity,它很棒 . 但是,我对.NET,Mono和Unity之间的相互关系感到困惑 . 我没有该领域的专业经验,我需要一些澄清 . 这些陈述是对还是错?
-
.NET框架并非设计为跨平台 .
-
.NET frameWork目标是以统一的方式设计程序,它们必须全部在虚拟机中运行 .
-
Mono是.NET框架的开源版本,旨在实现跨平台 . 使用它构建的程序可以在有单声道虚拟机的任何地方运行 .
-
使用mono框架构建的程序无法运行或与.NET虚拟机不完全兼容 .
-
Unity仅在编辑,构建和运行游戏时使用Mono frameWork .
-
使用Unity构建的游戏具有嵌入式单声道框架和/或单声道虚拟机 .
-
我不需要.Net框架来构建或运行Unity游戏 .
-
我在Unity中编写的C#脚本是在构建时之前和之后由单声道虚拟机运行的 .
所有Unity引擎公共代码库都是C包装的,实际上不是C#,因此它们在C端引擎上运行 . -
单声道框架工具和库使用单声道虚拟机在游戏中运行 .
使用.NET框架构建的 -
DLL与Mono不完全兼容 .
那我的评价是多少?我哪里错了?
(请善待 . 英语不是我的第一语言) .
1 回答
取决于你是否希望包括说Linux . 如果你问的是.NET最初的设计目标是Linux,那么,没有 . 但是,.NET Compact Framework允许.NET代码运行Xbox 360和Windows Phone .
现在有.NET Core,一个免费的开源框架,专为跨平台而设计,特别是Windows,Mac和Linux .
是 . 正确的术语是执行引擎而不是VM,尽管它们都在同一个类中 . 不要将EE视为类似于vmWare的东西,其中CPU指令是模拟的.2686579_ . .NET与Java类似,是一种p代码形式,但.NET程序集与当前CPU JIT,以提高性能并在CPU上本机运行 . [1]
是 . .NET Core具有相同的声明 . [4]
跨越它的Mono Framework的许多版本不是等效.NET Framework的1:1 .
例如
Mono在.NET 3.0中不支持WPF [2]
Mono在.NET 3.0中不支持WWF [2]
Mono不支持.NET 4.0中的CodeContracts [2]
不正确 . Unity还使用Unity Script编写游戏 .
但是,无论您的语言选择如何,运行时都会有很大差异 . 当通过Unity Web Player定位网络浏览器时,没有.NET / Mono EE . 该平台是Unity Web Player . 从这个意义上讲,目标平台上不需要.NET / Mono . [3]
不正确,见上文
正确
不正确,您选择用于编写Unity游戏的语言与运行时是否存在.NET / Mono EE之间没有关联 .
要看 .
在运行Unity Editor的桌面上? - 是的
部署在智能设备/浏览器上运行? - 不
不正确 . Mono可能与同等的.NET Framework完全兼容,也可能不完全兼容 . [2]
另见
1 "Is the CLR a Virtual Machine?",MSDN
2 Compatibility,单声道
3 How does the Unity Web Player work?,Quora
4.NET Core Framework - Go Cross-Platform with the .NET Framework,MSDN