MonoGame真的是跨平台的吗?

8
当我下载MonoGame(我将在Mac上使用它代替XNA)并解压缩时,所有的MonoDevelop解决方案文件都被命名为MonoGame.Framework.[PLATFORM NAME].sln,其中[PLATFORM NAME]是操作系统的名称。而且教程中的代码对于每个平台都是不同的,所以似乎对于一个MonoGame应用程序要在另一台机器上运行,它必须进行移植。这是正确的吗?如果是,还有哪些适用于Mono的其他版本的XNA,最好能在Xbox 360上使用?我见过MonoXNA,但据此发布时看来似乎不够成熟。
1个回答

14

MonoGame通过在多个平台上提供XNA API来使您的代码跨平台。 (但它不会像Flash或Java一样使您编译的二进制文件跨平台。)

MonoGame本身并非跨平台,这意味着每个平台都有一个版本-因为每个版本包含大量特定于平台的代码,这些代码需要实现XNA API以适用于该平台。

(虽然实际上相当多的MonoGame代码跨平台的,并且在不同的MonoGame版本之间共享-因为它反过来建立在像Mono、OpenGL和OpenAL这样的层上,这些层向不同平台提供具有不同基础实现的一致API。)

这与Microsoft的官方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。


好的,谢谢回复。有没有办法在MonoDevelop中以某种方式使用Microsoft XNA,比如将一些程序集链接到C#编译器上?我仍然想使用这个框架,只是更希望在Mac上使用它。 :) - Jwosty
@Jwosty 你的意思是:在Mac上使用MonoDevelop编译Windows/Xbox 360/Windows Phone XNA游戏吗?我认为这在技术上是可能的。C#就像Java一样,二进制文件实际上是跨平台的 - 所以只需要为每个平台构建设置适当的平台特定引用即可。但这是一个坏主意,因为你将无法运行它们(测试和调试)。而且*你将无法使用工具 - 特别是内容管道,但也包括Xbox 360/WP7部署工具。我建议你在虚拟机或双启动中运行Windows。 - Andrew Russell
好的,那可能是我最终会做的事情。感谢你提供的答案! - Jwosty

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接