繁体   English   中英

开发跨平台XNA库

[英]Developing a Cross Platform XNA Library

我正在尝试开发跨平台应用程序。 目前,我已经使用平台指定的模板设置了以下解决方案:

  • GameBase
  • 视窗
  • 的Xbox
  • WindowsPhone的

Windows,Xbox和WindowsPhone使用GameBase作为参考,但是我想为GameBase库中使用的每个平台分别分配不同的代码,如下例所示:

#if WINDOWS

    graphics.PreferredBackBufferWidth = 640;
    graphics.PreferredBackBufferHeight = 480;
    graphics.ApplyChanges();

    #elif WINDOWS_PHONE

    TargetElapsedTime = TimeSpan.FromTicks(333333);
    InactiveSleepTime = TimeSpan.FromSeconds(1);

    #endif

它不起作用,我可以在配置管理器中看到GameBase的平台是Any CPU,所以我想知道GameBase是类库吗?

如果是这样,我该如何解决它,如果可能的话,我想保留#if标签。

目录设置| Windows解决方案Game.cs | 解决方案资源管理器 目录设置| Windows解决方案Game.cs |解决方案资源管理器

您必须为不同的平台创建单独的Visual Studio项目。 通过使用“ 添加为链接”添加源代码,可以跨多个项目重用代码。 在链接到多个项目的共享源文件中,您可以使用#if等分隔平台特定的代码。

添加为链接截图

您的问题尚不清楚“它不起作用”的方式,但是通常您无法为Windows构建程序集(例如类库),然后在XBox和Windows Phone上使用它。

在不同项目类型之间共享项目是一件棘手的事情-仅仅是因为Visual Studio项目类型的使用方式,而且由于不同的项目类型实际上需要引用点网框架的不同版本。

有几件事可以帮助您:

希望有点帮助。 我个人目前主要使用手动剪切和粘贴,希望便携式版本库的下一个版本有所帮助(这是Win8 Metro的东西)

不知道这是否是您唯一的问题,但您拼错了WINDOWS_PHONE:

WINDOWS_HPONE

应该:

WINDOWS_PHONE

更新:

我这样做的方法是创建一个类库解决方案,将其命名为GameBaseLibrary。 然后在其中创建一个名为GameBase的项目,并在其中添加您要在所有平台上共享的所有代码。 (IE物理,数据访问等...)

然后,在同一解决方案中,添加XboxBaseLibrary,WindowsBaseLibrary,WindowsPhoneBaseLibrary并添加特定于每个平台的代码,在每个项目中向GameBase项目添加一个引用,以使用其他三个项目中的代码。

然后创建3种不同的解决方案类型-Xbox,Window,Windows Phone,并从GameBaseLibrary中添加已编译的dll作为它们各自的引用,以便能够使用该代码。 在处理每个版本的代码(xbox,Windows,Windows Phone)时,请注意所键入的代码,以确保它不会存在于GameBase类中,因为您不想继续重写相同的代码。

这样,大部分代码位于GameBaseLibrary中,而平台特定代码位于其他3个项目中。

我希望这很清楚。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM