MonoGame平台无关的输入/输出

4
我曾经做过一些XNA的工作,现在正试图在MonoGame中开展工作。以前,我使用 Microsoft.Xna.Framework 来满足所有输入和输出需求。现在,我正在尝试制作一个可以部署在尽可能多的平台上的游戏版本(目前不包括触摸界面),但我不知道该如何处理例如鼠标这样的问题。
MonoGame是否使 Microsoft.Xna.Framework 与平台无关,或者我必须使用其他框架并根据平台进行切换?

我认为最好的方法是尝试一下。 - pinckerman
我没有其他平台可以测试。目前我只有一台Windows电脑,如果不必在十个不同的平台上尝试所有可能的框架,那将是非常好的。 - River Tam
2
@pinckerman 我不同意。学习的最佳方式是提问,否则你会浪费大量时间去做一些事情,最终发现它们行不通,而有人本可以在很短的时间内告诉你答案。 - craftworkgames
1
@craftworkgames 我认为实践总能教给我们一些东西,所以我更喜欢在询问之前先尝试。在这种情况下,他显然无法尝试他所询问的内容,但我不知道这一点。 - pinckerman
2
@pinckerman 是的,我同意,在提问前尝试一些东西通常是个好主意(特别是在stackoverflow上),但这只能帮你到一定程度,利用他人经验可以让你迅速学到很多。 - craftworkgames
1个回答

2
MonoGame旨在使游戏轻松移植到其他平台,您不需要使用其他框架来实现这一目标。然而,它并不像简单地为每个新平台重新编译代码那么简单。
大部分代码都将保持不变,但您需要为每个平台组合一个项目,并在每个项目中链接所有的代码文件。我不会详细介绍这个过程,但我只是想说,您可以做到,而且并不难。
现在,您可能需要编写一些特定于平台的代码来处理设备特定的东西,例如屏幕缩放和输入处理。您需要做什么具体取决于您的游戏,因此我无法详细解释。
为了让您的生活更轻松,考虑到如何在其他平台上运行游戏并相应地编写代码会很有帮助。例如,手机触摸与鼠标点击非常相似,因此您可以将此功能包装在自己的方法中,以最小化移植时所需的代码更改。另一方面,某些使用鼠标的操作在触摸界面上根本不起作用,例如右键单击和悬停。同样,触摸界面有一些常用手势,这些手势在PC上的鼠标上没有对应,例如长按、滑动和捏合。
因此,简短的答案是,您不必做任何特殊处理,但如果您计划将游戏移植到其他平台,至少要考虑这个问题。

非常感谢。我的问题与PC平台有关(Linux vs. Mac vs. Windows),具体涉及输入和图形方面。看起来我正在使用许多微软框架,而有OpenTK替代品(由于某些原因我无法使用)。我不确定是否应该尝试使用OpenTK替代品,还是微软框架可以正常编译。 - River Tam
1
尽管OpenTK与MonoGame一起提供,但您不应直接使用它。 MonoGame的工作是隐藏特定平台的实现细节,以便您可以使用大部分相同的代码使游戏运行。在理想的世界中,您可以使用Microsoft XNA制作的游戏,并在不进行任何更改的情况下重新编译它以适用于MonoGame。实际上,这略微复杂,但并不多。 - craftworkgames

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