Xamarin.ios 使用Xamarin移植Windows Phone游戏

Xamarin.ios 使用Xamarin移植Windows Phone游戏,xamarin.ios,xamarin,monogame,Xamarin.ios,Xamarin,Monogame,我目前有一个非常简单的Windows Phone内存游戏,我想使用Xamarin工具将其移植到iOS、Android和Win8 我希望将业务逻辑集中在一个程序集中,只需为每个平台创建UI 在大多数情况下,代码是简单的C#,但我确实使用位图来显示游戏中的牌。然而,据我所知,在不同的平台上没有使用位图的标准支持 对于这个问题,建议采用什么方法 我想我必须使用像MonoGame这样的东西,但我觉得这对于我想做的事情来说是过分的。你说你的代码是用C#编写的。据我所知,Xamarin是让C#代码在Andr

我目前有一个非常简单的Windows Phone内存游戏,我想使用Xamarin工具将其移植到iOS、Android和Win8

我希望将业务逻辑集中在一个程序集中,只需为每个平台创建UI

在大多数情况下,代码是简单的C#,但我确实使用位图来显示游戏中的牌。然而,据我所知,在不同的平台上没有使用位图的标准支持

对于这个问题,建议采用什么方法

我想我必须使用像MonoGame这样的东西,但我觉得这对于我想做的事情来说是过分的。

你说你的代码是用C#编写的。据我所知,Xamarin是让C#代码在Android和iOS上运行的唯一方法。Xamarin有一个免费的入门版,您可能可以使用,但您的应用程序大小有限。一旦达到尺寸限制,您需要支付许可证费用

在您决定支付许可证费用后,如果您想在端口上使用MonoGame,则不需要支付其他费用。如果你的游戏已经在使用XNA或者你有一些XNA的经验,我建议你使用MonoGame。MonoGame是XNA的一个端口,它是为制作游戏而设计的,因此许多与游戏相关的任务更容易完成

另一种方法是使用标准的应用程序构建API将游戏构建为应用程序。这是可能的,但我看不出这样做有什么好处,除非你试图通过使用Xamarin的免费版来节省资金。如果你打算在将来制作更多的游戏,你最好咬紧牙关,学习单打游戏

在MonoGame中使用位图应该不会有问题。不过,您可能需要先将它们转换为PNG格式


使用可移植类库可以将业务逻辑集中在一个程序集中,但由于PCL的限制,使用文件共享通常更容易。基本上,每个项目中的文件都有一个软链接。更新文件会同时更新所有项目中的文件,但添加新文件需要将它们分别添加到每个项目中。维护起来有点麻烦,但不多。

当然,作为一个起点,您应该分离UI和逻辑

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

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

另一种方式是<代码>Unity 3D。使用该引擎取决于您编写的代码。在某些情况下,可以使用共享业务逻辑的游戏引擎。多亏了这项新技术,独立游戏开发者可以免费制作和部署他们的游戏

简言之,该计划是:

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

要使用图像/位图,是否需要使用MonoGames或Unity等第三方库?或者.NET中是否有支持不同平台中存在的图像/位图的部分?简而言之,没有。对于任何目标平台,您都将拥有图像文件或字节数组(打包资源),您应该使用目标平台API绘制哪一个。例如,要在
iOS
中显示图像,可以是
UIImageView
,在
Android
中可以是
ImageView
,这与
iOS
版本略有不同。因此,
UI
代码将相对较大。
MonoGame
或Unity的要点是共享甚至
UI
code。对于在
MonoGame
中显示图像的任何目标平台,都可以通过
Texture2D
类完成。Unity也是如此。如果您指的是图像位图,那么您可以根据自己的判断使用iOS/Android等同物进行图像查看或单游戏。但是,如果您指的是System.Drawing.Bitmap对象,则需要使用其他对象,因为当前稳定版本的Mono for iOS/Android中没有位图对象。在这种情况下,我会推荐MonoGame,我最担心的是有一种跨平台的方式来阅读图像(PNG)。看起来我最好的选择是使用MonoGame支持的Texture2D。关于单一游戏的pluralsight课程非常有用