[英]Developing a Cross Platform XNA Library
我正在尝试开发跨平台应用程序。 目前,我已经使用平台指定的模板设置了以下解决方案:
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 | 解决方案资源管理器
您必须为不同的平台创建单独的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.