如何创建基于 MonoGame 的类库以在 UWP、iOS 和 Android 上使用

j3d*_*j3d 5 android visual-studio ios monogame win-universal-app

我已经安装了 VisualStudio 2015、Xamarin 和 MonoGame 3.5。我将为 Windows UWP、iOS 和 Android 构建 XNA 应用程序。

我有一些基于 XNA 的库...我需要为三个目标系统(Windows UWP、iOS 和 Android)构建它们,但无法为 Windows UWP 创建库。我尝试创建一个MonoGame Windows 10 Universal Project,但这样的项目无法转换为生成 DLL。

我也尝试过创建一个Class Library (Universal Windows)项目,但后来无法添加MonoGame.Framework到引用中。

我在创建时遇到同样的问题MonoGame Android Project...无法切换到库项目。唯一可以修改为库项目的 MonoGame 项目是MonoGame iOS Project.

也就是说,如何创建一个基于 XNA (MonoGame) 的类库以便在 UWP、iOS 和 Android 中使用?

cra*_*mes 3

据我所知,你这里只有两个选择。

我还没有真正使用过共享项目。我理解它们的方式是,它们允许您在多个项目之间共享代码,就好像它位于库中一样,但它实际上直接编译到引用项目中。它们可以被认为是高级文件链接。

可移植类库有点不同。我在MonoGame.Extended项目中使用它们并取得了巨大成功,但这并不总是那么容易。它们的工作方式是提供适用于所有目标平台的功能子集。它们编译为可由任何项目引用的 DLL,并且您可以确信代码将是相同的。

使用 PCL 有几个缺点:

  • 您只能使用功能的子集。令人惊讶的是,这种情况并不经常发生。
  • 如果 PCL 引用另一个库,则它也必须是 PCL。

第二点是 MonoGame 的事情变得有点棘手。通常,MonoGame 不作为 PCL 提供,但已在 NuGet 上发布了可供使用的 PCL 版本。

就目前情况而言,NuGet 包是官方发布版本之后的一个版本,但令人惊讶的是,这并不重要,因为它是一个诱饵和切换PCL,这本质上意味着它只是提供在运行时使用的真实 DLL 的接口。换句话说,即使 PCL 是 3.2 版本,只要界面没有改变,你的游戏仍然会愉快地引用 3.5 版本。

3.6 版本中有一些关于改善这种情况的讨论。