【问题标题】:MonoGame Platform Agnostic Input/OutputMonoGame 平台无关的输入/输出
【发布时间】:2013-09-13 17:13:53
【问题描述】:

我已经完成了一些 XNA 工作,现在我正在尝试在 MonoGame 中工作。以前,对于我所有的输入和输出需求,我使用了Microsoft.Xna.Framework。我现在正试图让我的游戏的一个版本部署在尽可能多的平台上(目前不包括触摸界面),但我不知道我应该如何处理鼠标等问题。

MonoGame 是否使Microsoft.Xna.Framework 与平台无关,还是我必须使用其他框架并根据平台在它们之间切换?

【问题讨论】:

  • 我认为了解这一点的最好方法就是尝试。
  • 我没有其他平台可以测试。我目前只有一台 Windows PC,不用在十个不同的平台上尝试所有可能的框架真是太好了。
  • @pinckerman 我不同意。学习东西的最好方法是问,否则你会花所有的时间做事情,只是为了发现它们不起作用,而有人本可以在很短的时间内告诉你答案。
  • @craftworkgames 我认为实践总能教会我们一些东西,所以我更喜欢先尝试再问。在这种情况下,他显然无法真正尝试他的要求,但我不知道。
  • @pinckerman 是的,我同意在询问之前尝试一些东西通常是一个好主意(尤其是在 stackoverflow 上),但它只会让你到目前为止,你可以通过利用其他人的经验很快学到很多东西.

标签: user-interface xna monogame multiplatform


【解决方案1】:

MonoGame 旨在让您轻松地将游戏移植到其他平台,您无需使用任何其他框架即可实现该目标。然而,这并不像简单地为每个新平台重新编译代码那么简单。

在大多数情况下,您的所有代码都将保持不变,但您需要为每个平台组合一个项目,并链接每个平台中的所有代码文件。这个我就不详细讲了,我就说你能做到,没那么难。

现在,您会发现您可能必须编写一些特定于平台的代码来处理特定于设备的内容,例如屏幕缩放和输入处理。你需要做什么取决于你的游戏,所以我也无法详细解释。

为了让您的生活更轻松,考虑您的游戏将如何在其他平台上运行并相应地编写代码会很有帮助。例如,移动设备上的触摸与单击鼠标非常相似,因此您可以将此功能包装在自己的方法中,以最大限度地减少移植时所需的代码更改。另一方面,您可以用鼠标完成的某些操作根本不适用于触摸界面,例如右键单击和悬停。同样,触摸界面有commonly used gestures,它并不能真正映射到PC 上的鼠标,例如长按、滑动和捏合。

所以简短的回答是,你不必做任何特别的事情,但如果你打算在未来移植你的游戏,你至少应该考虑一下。

【讨论】:

  • 非常感谢。在我的特定情况下,我的问题是关于 PC 平台(Linux vs. Mac vs. Windows),更具体地说是关于输入和图形。似乎我使用了很多 Microsoft 框架,同时还有 OpenTK 替代方案(由于某种原因我无法开始工作)。我不确定我是否应该尝试使用 OpenTK 替代方案,或者 Microsoft 框架是否可以正常编译。
  • 即使 OpenTK 自带 MonoGame,你也不应该直接使用它。 MonoGame 的工作是隐藏特定平台的实现细节,这样您就可以让游戏使用几乎相同的代码运行。在理想情况下,您可以使用 Microsoft XNA 制作的游戏并使用 MonoGame 重新编译它而无需任何更改。实际上它稍微复杂一些,但并不多。
猜你喜欢
  • 1970-01-01
  • 2014-04-08
  • 1970-01-01
  • 1970-01-01
  • 2019-10-03
  • 2015-09-04
  • 2013-03-05
  • 2020-10-11
  • 1970-01-01
相关资源
最近更新 更多