作为一个简单的 Unity 独立开发者,Mono 和 .NET 仍然让我感到困惑。谁是谁 ?谁做了什么?
As a simple Unity indie dev, Mono and .NET still confuse me. Who is who ? Who does what?
我将 Unity 与 Visual Studio 一起使用,它很棒。但是,我对 .NET、Mono 和 Unity 之间究竟有何关联感到困惑。我在该领域没有专业经验,我需要一些说明。这些说法是对还是错?
- .NET 框架不是为跨平台设计的。
- .NET frameWork 的目标是以统一的方式设计程序,它们必须都运行 在虚拟机中。
- Mono 是 .NET 框架的开源版本,旨在跨平台。只要有 mono 虚拟机,用它构建的程序就可以 运行。
- 使用 mono 框架构建的程序不能 运行 或与 .NET 虚拟机不完全兼容。
- Unity 在编辑、构建和 运行游戏中仅使用 Mono frameWork。
- 使用 Unity 构建的游戏具有嵌入式单声道框架和/或单声道虚拟机。
- 我不需要 .Net 框架来构建或 运行ning Unity 游戏。
- 我在 Unity 中编写的 C# 脚本是 运行 在构建时间之前和之后由单声道虚拟机编写的。
所有 Unity 引擎 public 代码库都是 C++ 包装的,实际上不是 C#,因此它们 运行 宁在 C++ 端引擎上。
- 单声道框架工具和库 运行 在游戏中带有单声道虚拟机。
- 使用 .NET 框架构建的 DLL 与 Mono 不完全兼容。
那么我的评分是多少?我哪里错了?
(请客气。英语不是我的第一语言)。
- .Net frameWork was not designed to be cross plateform.
取决于您是否希望在其中包括 Linux。如果您问 .NET 最初是否设计用于 Linux,那么 否 。然而,.NET Compact Framework 允许 .NET 代码 运行 Xbox 360 和 Windows Phone.
现在有 .NET Core,一个专为跨平台设计的免费开源框架,特别是 Windows、Mac 和 Linux。
- The .Net frameWork goal is to design programs in a unified way, and they must all run and a virtual machine.
是的。正确的术语是 执行引擎 顺便说一句,不是 VM,尽管它们都在同一个 class 中。不要将 EE 视为类似于 vmWare 的东西,其中 CPU 指令被 不断地 模拟。 .NET 类似于 Java 并且是 p 代码的一种形式,但是 .NET 程序集是 JIT 到当前的 CPU 以提高性能和 运行 本机在 CPU. [1]
- Mono is an open source version of .Net frameWork, designed to be cross plateform. Programs built with it can run wherever there is a mono virtual machine.
是的。 .NET Core 也有同样的说法。 [4]
- Programs built with mono frameWork can not run, or are not fully compatible with .Net virtual machine.
许多版本的 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 only use Mono frameWork, either in editing, building and running games.
不正确。 Unity 还使用 Unity Script 编写游戏。
然而,无论您选择何种语言,运行时间都有很大的不同。当通过 Unity Web Player 定位网络浏览器时,没有 .NET/Mono EE。该平台是 Unity Web Player。从这个意义上说,目标平台上不需要 .NET/Mono 。 [3]
- Games built with Unity have embeded mono framework and /or mono virtual machine.
不正确,见上文
- I don't need to have .Net frameWork for building or running Unity games.
正确
- The C# scripts i wrote in Unity are run by a mono virtual machine, before and after build time. All the Unity engine public code library is c++ wrapped and are not actually C#, thus they are running on c++ side engine.
不正确,您选择使用哪种语言编写 Unity 游戏与 .NET/Mono EE 在 运行 时间是否存在之间没有关联。
- The mono frameWork tools and library are run in game with a mono virtual machine.
视情况而定。
- 在您的桌面上同时 运行正在使用 Unity 编辑器? - 是的
- 部署在运行宁smartdevice/browser? - 没有
- Dll built with .Net frameWork are not fully compatible with mono.
不正确。 Mono 可能与等效的 .NET Framework 完全兼容,也可能不完全兼容。 [2]
另见
1 "Is the CLR a Virtual Machine?", MSDN
2 Compatibility, 单声道
3 How does the Unity Web Player work?, Quora
实现跨平台
我将 Unity 与 Visual Studio 一起使用,它很棒。但是,我对 .NET、Mono 和 Unity 之间究竟有何关联感到困惑。我在该领域没有专业经验,我需要一些说明。这些说法是对还是错?
- .NET 框架不是为跨平台设计的。
- .NET frameWork 的目标是以统一的方式设计程序,它们必须都运行 在虚拟机中。
- Mono 是 .NET 框架的开源版本,旨在跨平台。只要有 mono 虚拟机,用它构建的程序就可以 运行。
- 使用 mono 框架构建的程序不能 运行 或与 .NET 虚拟机不完全兼容。
- Unity 在编辑、构建和 运行游戏中仅使用 Mono frameWork。
- 使用 Unity 构建的游戏具有嵌入式单声道框架和/或单声道虚拟机。
- 我不需要 .Net 框架来构建或 运行ning Unity 游戏。
- 我在 Unity 中编写的 C# 脚本是 运行 在构建时间之前和之后由单声道虚拟机编写的。
所有 Unity 引擎 public 代码库都是 C++ 包装的,实际上不是 C#,因此它们 运行 宁在 C++ 端引擎上。 - 单声道框架工具和库 运行 在游戏中带有单声道虚拟机。
- 使用 .NET 框架构建的 DLL 与 Mono 不完全兼容。
那么我的评分是多少?我哪里错了?
(请客气。英语不是我的第一语言)。
- .Net frameWork was not designed to be cross plateform.
取决于您是否希望在其中包括 Linux。如果您问 .NET 最初是否设计用于 Linux,那么 否 。然而,.NET Compact Framework 允许 .NET 代码 运行 Xbox 360 和 Windows Phone.
现在有 .NET Core,一个专为跨平台设计的免费开源框架,特别是 Windows、Mac 和 Linux。
- The .Net frameWork goal is to design programs in a unified way, and they must all run and a virtual machine.
是的。正确的术语是 执行引擎 顺便说一句,不是 VM,尽管它们都在同一个 class 中。不要将 EE 视为类似于 vmWare 的东西,其中 CPU 指令被 不断地 模拟。 .NET 类似于 Java 并且是 p 代码的一种形式,但是 .NET 程序集是 JIT 到当前的 CPU 以提高性能和 运行 本机在 CPU. [1]
- Mono is an open source version of .Net frameWork, designed to be cross plateform. Programs built with it can run wherever there is a mono virtual machine.
是的。 .NET Core 也有同样的说法。 [4]
- Programs built with mono frameWork can not run, or are not fully compatible with .Net virtual machine.
许多版本的 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 only use Mono frameWork, either in editing, building and running games.
不正确。 Unity 还使用 Unity Script 编写游戏。
然而,无论您选择何种语言,运行时间都有很大的不同。当通过 Unity Web Player 定位网络浏览器时,没有 .NET/Mono EE。该平台是 Unity Web Player。从这个意义上说,目标平台上不需要 .NET/Mono 。 [3]
- Games built with Unity have embeded mono framework and /or mono virtual machine.
不正确,见上文
- I don't need to have .Net frameWork for building or running Unity games.
正确
- The C# scripts i wrote in Unity are run by a mono virtual machine, before and after build time. All the Unity engine public code library is c++ wrapped and are not actually C#, thus they are running on c++ side engine.
不正确,您选择使用哪种语言编写 Unity 游戏与 .NET/Mono EE 在 运行 时间是否存在之间没有关联。
- The mono frameWork tools and library are run in game with a mono virtual machine.
视情况而定。
- 在您的桌面上同时 运行正在使用 Unity 编辑器? - 是的
- 部署在运行宁smartdevice/browser? - 没有
- Dll built with .Net frameWork are not fully compatible with mono.
不正确。 Mono 可能与等效的 .NET Framework 完全兼容,也可能不完全兼容。 [2]
另见
1 "Is the CLR a Virtual Machine?", MSDN
2 Compatibility, 单声道
3 How does the Unity Web Player work?, Quora
实现跨平台