2

我正在使用 C# 创建一个使用 MonoGame 的游戏,我希望在多个平台上使用它(我知道 MonoGame 可以做到)。

有没有办法在 C# 中创建一个 .dll 并从其他操作系统(最好是 iOS、Android 和 MacOS)加载它而不重新编译库?我准备为每个平台编写一个“加载器”应用程序,但不想重写整个项目。

我希望有一种方法可以在这些平台上从 .net dll 加载函数(即加载游戏),而无需使用 MonoTouch 等付费产品。

4

2 回答 2

2

基本上 .NET/Mono 程序集都被编译成 CIL 代码,这是一个 ECMA 标准。

但是,您仍然必须以不依赖于操作系统细节的方式对游戏进行编程。

  • 不要引用某些 .NET 程序集(即没有 WCF,因为它只有有限的 WCF 支持,根本没有 WPF,没有 WWF)
  • 不要引用特定于操作系统的 DLL(即没有对 kernel32.dll 的 P/Invokes 等。
  • 不要使用特定于操作系统的路径或使用预处理器指令来制作特定于操作系统的代码(是的,这需要重新编译,你可能不会轻易解决这个问题)

Mono 上的线程有一些问题,因此您可能必须使用预处理器指令制作特定于平台的代码。

老实说,我认为必须重新编译代码没有问题,如果代码写得很清楚,只需将新项目添加到解决方案文件并设置预处理器标志即可。然后您所要做的就是编译解决方案并在您的 bin 文件夹中有多个 DLL。没有人说过你必须重写整个项目(除非项目已经完成并且有上面提到的任何依赖项),在这种情况下......在开始开发之前不必考虑它是你自己的错.

您只需使用所需的 Mono Runtime 部署您的应用程序(在 iOS 等上)。为此,您可能需要 Xamarin 之类的东西或连接您自己的 Mono 运行时

参考链接: http ://www.mono-project.com/Compatibility http://www.mono-project.com/MoMA

于 2013-08-08T13:41:44.390 回答
1

您可以查看 Xamarin 框架。但是你总是必须重新编译你的项目。 赛马林

在这些平台上,无需使用 MonoTouch 等付费产品。

这将是困难的。

于 2013-08-08T13:10:57.980 回答