【问题标题】:Porting Windows Phone game with Xamarin使用 Xamarin 移植 Windows Phone 游戏
【发布时间】:2013-05-22 21:08:22
【问题描述】:

我目前有一个非常简单的 Windows Phone 记忆游戏,我想使用 Xamarin 工具将它移植到 iOS、Android 和可能的 Win8。

我想将我的业务逻辑集中在一个程序集中,并为每个平台简单地创建 UI。

大部分代码都是简单的 C#,但我确实使用位图来显示游戏中的卡片。但是,根据我的阅读,不同平台没有标准支持使用位图。

解决这个问题的推荐方法是什么?

我想我必须使用 MonoGame 之类的东西,但我觉得这对于我想做的事情来说太过分了。

【问题讨论】:

  • 如果您指的是图像位图,那么您可以根据自己的判断使用 iOS/Android 等效的图像视图或单体游戏。但是,如果您指的是 System.Drawing.Bitmap 对象,那么您将需要使用其他东西,因为 Bitmap 对象在 iOS/Android 的 Mono 的当前稳定版本中不可用。在这种情况下,我会推荐 MonoGame。
  • 我最担心的是有一种跨平台的方式来读取图像 (PNG)。看起来我最好的选择是使用 MonoGame 支持的 Texture2D。 MonoGame 上的复数课程非常有帮助pluralsight.com/training/Courses/TableOfContents/monogame

标签: xamarin.ios xamarin monogame


【解决方案1】:

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

在您决定为许可证付费后,如果您想将 MonoGame 用于移植,则无需支付任何其他费用。如果您的游戏已经在使用 XNA 或者您有一些 XNA 经验,我建议您使用 MonoGame。 MonoGame 是 XNA 的一个移植版本,专为制作游戏而设计,因此许多与游戏相关的任务变得更加容易。

另一种方法是使用标准应用构建 API 将您的游戏构建为应用。这是可能的,但除非您试图通过使用 Xamarin 的免费版来省钱,否则我看不出这样做有什么好处。如果你打算在未来做更多的游戏,你最好还是硬着头皮学习 MonoGame。

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

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

【讨论】:

    【解决方案2】:

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

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

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

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

    简而言之,计划是:

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

    【讨论】:

    • 要使用图像/位图,我需要使用 MonoGames 或 Unity 等第三方库吗?还是 .NET 的某些部分支持不同平台中存在的图像/位图?
    • 简而言之,没有。对于任何目标平台,您都将拥有图像文件或字节数组(打包资源),您应该使用目标平台 API 绘制哪个。例如,在iOS 中显示图像可以是UIImageView,在Android 中可以是ImageView,这与iOS 版本略有不同。因此UI 代码会比较大。 MonoGame 或 Unity 的意义在于共享 UI 代码。对于在MonoGame 中显示图像的任何目标平台,可以通过Texture2D 类完成。 Unity 也是如此。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多