作为一个简单的Unity独立开发者,Mono和.NET仍然让我感到困惑。谁是谁 ?谁做了什么?

bsm*_*all 4 .net c# mono unity-game-engine

我将Unity与Visual Studio一起使用,这很棒。但是,我对.NET,Mono和Unity之间到底如何相互关联感到困惑。我没有该领域的专业经验,需要澄清。这些陈述是对还是错?

  1. .NET框架并非设计为跨平台的。
  2. .NET frameWork的目标是以统一的方式设计程序,并且它们都必须在虚拟机中运行。
  3. Mono是.NET框架的开放源代码版本,旨在跨平台。用它构建的程序可以在有单虚拟机的任何地方运行。
  4. 使用Mono框架构建的程序无法运行或与.NET虚拟机不完全兼容。
  5. 在编辑,构建和运行游戏中,Unity仅使用Mono框架工作。
  6. 使用Unity构建的游戏具有嵌入式mono框架和/或mono虚拟机。
  7. 我不需要用于构建或运行Unity游戏的.Net框架。
  8. 我在Unity中编写的C#脚本在构建时间之前和之后均由一个单虚拟机运行。
    所有Unity引擎公共代码库都是C ++封装的,实际上不是C#,因此它们在C ++端引擎上运行。
  9. Mono框架工具和库是通过Mono虚拟机在游戏中运行的。
  10. 用.NET框架构建的DLL与Mono没有完全兼容。

那我的评价是多少?我哪里错了?
(请客气。英语不是我的母语)。

Mic*_*kyD 7

  1. .Net frameWork并非设计为跨平台形式。

取决于您是否希望在其中包含Linux。如果您要问.NET是否最初是针对Linux设计的,则。但是,有一个.NET Compact Framework,它允许.NET代码运行Xbox 360和Windows Phone。

现在有.NET Core,这是一个免费的开源框架,专为跨平台(尤其是Windows,Mac和Linux)而设计。

  1. .Net frameWork的目标是以统一的方式设计程序,并且程序必须全部运行并且是虚拟机。

是。正确的术语是执行引擎,尽管它们属于同一类,但不是VM。不要将EE视为类似于vmWare的东西,在vmWare中,CPU指令不断被仿真。.NET像Java一样,是p代码的一种形式,但是.NET程序集与当前CPU进行了JIT集成,以提高性能并在CPU上本地运行。[1]

  1. Mono是.Net frameWork的开放源代码版本,设计为跨平台形式。用它构建的程序可以在有单虚拟机的任何地方运行。

是。.NET Core具有相同的主张。[4]

  1. 用mono frameWork构建的程序无法运行,或与.Net虚拟机不完全兼容。

跨多个版本的Mono框架不是等效的.NET Framework的1:1。

例如

  • Mono在.NET 3.0中不支持WPF [2]
  • Mono在.NET 3.0中不支持WWF [2]
  • Mono不支持.NET 4.0中的CodeContracts [2]
  1. 在编辑,构建和运行游戏中,Unity仅使用Mono frameWork。

不正确 Unity还使用Unity Script编写游戏。

但是,无论您选择哪种语言,运行时都有很大的不同。当说通过Unity Web Player进行网络浏览器定位时,没有.NET / Mono EE。该平台是Unity Web Player。从这个意义上说,目标平台上不需要.NET / Mono。[3]

  1. 使用Unity构建的游戏已嵌入了mono框架和/或mono虚拟机。

不正确,请参见上文

  1. 我不需要.Net frameWork即可构建或运行Unity游戏。

正确

  1. 我在Unity中编写的C#脚本在构建时间之前和之后均由一个单虚拟机运行。所有Unity引擎公共代码库都是c ++封装的,实际上不是C#,因此它们在c ++端引擎上运行。

错误的是,您选择用来编写Unity游戏的语言与运行时是否存在.NET / Mono EE之间没有关联。

  1. mono frameWork工具和库在具有Mono虚拟机的游戏中运行。

要看。

  • 在运行Unity编辑器的同时在桌面上吗?-是的
  • 部署在智能设备/浏览器上运行?-没有
  1. 用.Net frameWork构建的Dll与mono不完全兼容。

不正确 是Mono,它可能会或可能不会与等效的.NET Framework完全兼容。[2]

也可以看看

1 “ CLR是虚拟机吗?” ,MSDN

2 兼容性,单声道

3 Unity Web Player如何工作?,Quora

4 .NET Core框架-与.NET Framework跨平台,MSDN