gpt4 book ai didi

c# - Unity 中的 Mono 与 .NET

转载 作者:太空狗 更新时间:2023-10-30 00:37:34 25 4
gpt4 key购买 nike

我将 Unity 与 Visual Studio 结合使用,它非常棒。但我对 .NET、Mono 和 Unity 之间究竟有何关联感到困惑。这些说法对还是错?

  1. .NET Framework 不是为跨平台而设计的。
  2. .NET Framework 的目标是以统一的方式设计程序,并且它们都必须在虚拟机中运行。
  3. Mono 是 .NET Framework 的开源版本,专为跨平台而设计。用它构建的程序可以在安装了 Mono 虚拟机的任何地方运行。
  4. 使用 Mono 构建的程序无法运行或与 .NET 虚拟机不完全兼容。
  5. Unity 仅使用 Mono 来编辑、构建和运行游戏。
  6. 使用 Unity 构建的游戏中嵌入了 Mono 框架和/或虚拟机。
  7. 我不需要安装 .NET Framework 来构建或运行 Unity 游戏。
  8. 我在 Unity 中编写的 C# 脚本在构建时间之前和之后由 Mono 虚拟机运行。所有 Unity 引擎公共(public)代码库都是 C++ 包装的,而不是 C#,因此它运行在 C++ 端引擎中。
  9. Mono 框架工具和库在游戏中使用 Mono 虚拟机运行。
  10. 使用 .NET Framework 构建的 DLL 与 Mono 不完全兼容。

最佳答案

  1. .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)设计的免费开源框架。

  1. The .Net frameWork goal is to design programs in a unified way, and they must all run and a virtual machine.

是的。正确的术语是 Execution Engine 顺便说一句,不是 VM,尽管它们都属于同一类。不要将 EE 视为类似于 vmWare 的东西,其中 CPU 指令被不断 模拟。 .NET 与 Java 类似,是 p 代码的一种形式,但是 .NET 程序集是 JIT 到当前 CPU 的,以提高性能并在 CPU 上本地运行。 [1]

  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]

  1. 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]
  1. 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]

  1. Games built with Unity have embeded mono framework and /or mono virtual machine.

不正确,见上文

  1. I don't need to have .Net frameWork for building or running Unity games.

正确

  1. 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 之间没有关联。

  1. The mono frameWork tools and library are run in game with a mono virtual machine.

视情况而定。

  • 在桌面上运行 Unity 编辑器? - 是的
  • 部署在智能设备/浏览器上运行? - 没有
  1. 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? , 知乎

4 .NET Core Framework - Go Cross-Platform with the .NET Framework ,MSDN

关于c# - Unity 中的 Mono 与 .NET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48614657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com