当我下载 MonoGame(我将使用它代替 XNA,因为我在 Mac 上)并解压缩它时,所有 MonoDevelop 解决方案文件都被命名为MonoGame.Framework.[PLATFORM NAME].sln
,[PLATFORM NAME]
并且是操作系统的名称。并且教程中的代码对于每个平台都是不同的,因此似乎 MonoGame 应用程序要在不同的机器上运行,它必须被移植。它是否正确?如果是这样,还有哪些其他版本的 XNA 用于 Mono,最好是在 Xbox 360 上工作?我见过 MonoXNA,但在这篇文章中使用它似乎还不够成熟。
1 回答
MonoGame 通过在多个平台上提供 XNA API 使您的代码跨平台。(但它不会使您编译的二进制文件像 Flash 或 Java 那样跨平台。)
MonoGame本身不是跨平台的,因为每个平台都有一个版本,因为每个版本都包含为该平台实现 XNA API 所需的大量特定于平台的代码。
(虽然实际上大量的 MonoGame 代码是跨平台的,并且在不同的 MonoGame 版本之间共享——因为反过来,它是建立在 Mono、OpenGL 和 OpenAL 等层上的,这些层与 MonoGame 一样,提供具有不同底层实现的一致 API平台上。)
这与微软官方的 XNA 实现完全相同。XNA 库有 3 个不同版本(Windows、Xbox 360 和 Windows Phone)。它们都提供 XNA API。您可以为任何这些平台构建使用 XNA API 的代码。
MonoXNA 已经过时了,而且它的大部分有用代码已经进入了 MonoGame。
据我所知,目前没有其他使用 Mono 在 OSX 上运行的 XNA 实现。有ExEn,它使用 Mono - 但仅适用于 iOS 和 Android。
在 Xbox 360 上使用 XNA 的唯一选择是使用 Microsoft 的版本。但这并不妨碍您也针对 MonoGame 编译您的代码。