android - 如何创建基于 MonoGame 的类库以供 UWP、iOS 和 Android 使用

标签 android ios visual-studio win-universal-app monogame

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

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

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

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

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

最佳答案

据我所知,这里只有 2 个选项。

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

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

使用 PCL 有几个缺点:

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

第二点是使用 MonoGame 时有些棘手的地方。通常,MonoGame 不作为 PCL 提供,但 PCL 版本已published on NuGet可以使用。

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

some talk关于在 3.6 版本中改善这种情况。

关于android - 如何创建基于 MonoGame 的类库以供 UWP、iOS 和 Android 使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36605694/

相关文章:

c# - 数据库中没有发生数据插入

Android:在 Activity 之间向前和向后传递消息

android - MP4 是流媒体协议(protocol)还是文件格式?

android - 如何从xml中的另一个包加载资源?

ios - 使用 if 语句将 tableViewController 插入 navigationController

ios - Action Sheet 在 iphone 中有效,但在 ipad 中无效

javascript - 从javascript中断在Razor View中调用data-url-action

android - 如何获取视频流的时间数据?

javascript - 如何在相应操作系统上的 Nativescript 中集成平台依赖的 SDK

c++ - 由于安装(EXPORT "foo-targets"...)在导出集中多次包含目标 "foo",aws-cpp-sdk 在 Windows 构建期间失败