簡體   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