使用Xamarin移植Windows Phone游戏

4
我目前有一个非常简单的Windows Phone记忆游戏,我想使用Xamarin工具将其移植到iOS、Android和可能的Win8上。
我想将业务逻辑集中在一个程序集中,并为每个平台创建UI。
大部分代码都是简单的C#代码,但我会使用位图来展示游戏中的卡片。然而,根据我的了解,在不同平台上使用位图没有标准支持。
针对这个问题,有什么推荐的方法吗?
我想我必须使用类似于MonoGame的东西,但觉得这对我想做的事情来说过于复杂。

如果您正在引用图像位图,则可以根据自己的判断使用iOS/Android等效的图像视图或Monogame。但是,如果您正在引用System.Drawing.Bitmap对象,则需要使用其他内容,因为Bitmap对象在当前稳定版本的Mono for iOS/Android中不可用。在这种情况下,我建议使用MonoGame。 - kc7zax
我的最大担忧是如何以跨平台的方式读取图像(PNG)。看起来我最好的选择是使用在MonoGame中支持的Texture2D。Pluralsight上的MonoGame课程非常有帮助http://pluralsight.com/training/Courses/TableOfContents/monogame - Andy T
2个回答

2
你说你的代码是用C#编写的。据我所知,Xamarin是在Android和iOS上运行C#代码的唯一方法。Xamarin有一个免费的入门版,你也许可以使用,但你的应用程序将受到大小限制。一旦你达到了大小限制,你就需要支付许可证费用。
在你决定支付许可证费用后,如果你想要使用MonoGame进行移植,就不需要其他费用了。如果你的游戏已经使用了XNA或者你有一些XNA的经验,我建议使用MonoGame。MonoGame是XNA的一个移植版本,专门设计用于制作游戏,因此许多与游戏相关的任务更容易完成。
另一种选择是使用标准的应用程序构建API来构建你的游戏应用程序。虽然这是可能的,但我看不出这样做有什么优势,除非你试图通过使用Xamarin的免费版来节省费用。如果你计划未来制作更多的游戏,最好还是学习MonoGame。
在MonoGame中使用位图不应该是一个问题。尽管如此,你可能需要先将它们转换为PNG格式。
将业务逻辑集中在一个程序集中有点可能是使用可移植类库实现的,但由于PCL的限制,使用文件共享通常更容易。基本上,你在每个项目中都有一个指向文件的软链接。更新文件会同时更新所有项目中的文件,但添加新文件需要你逐个项目添加。这可能有点麻烦,但并不是很大的问题。

0

首先,作为起点,您应该将UI和逻辑分开。

为了实现这一点,我强烈建议您制作游戏的控制台版本。使用控制台,只能向应用程序发送带参数的命令。没有鼠标或实时键盘使用。所有与UI相关的任务都将被留下。只有业务逻辑和要使用的命令会保留。

然后,您应该尝试使用MonoGame。它对于2D游戏来说足够可靠。更重要的是,如果IL代码不太多,它可以免费用于iOSAndroid

另一种方法是... Unity 3D。使用该引擎取决于您编写的代码。在某些情况下,可以使用该游戏引擎共享业务逻辑。由于新的Unity 3D政策,独立游戏开发者可以免费制作和部署他们的游戏。

简而言之,计划如下:

  • 实现核心功能(带控制台I/O);
  • 然后,选择引擎并为目标平台实现UI。

使用图像/位图是否需要我使用第三方库,如MonoGames或Unity?还是.NET的某些部分支持不同平台上存在的图像/位图? - Andy T
简而言之,不行。对于任何目标平台,您都将拥有图像文件或字节数组(打包资源),应使用目标平台API进行绘制。例如,在iOS中显示图像可能是UIImageView,在Android中可能是ImageView,这与iOS版本略有不同。因此,UI代码将相对较大。 MonoGame或Unity的重点是共享甚至是UI代码。对于任何目标平台,通过Texture2D类可以在MonoGame中显示图像。对于Unity也是如此。 - Maxim Korobov

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