両方のプロファイルのXNA 4ゲーム


7

私はXNA 4でゲームを書いています。このバージョンには、高解像度とリーチの2つのプロファイルがあります。私の問題は、これらのプロファイルごとにゲームコードが必要であり、2つのプロジェクトがあり、両方ですべての変更を行うのは非常に不快なことです。私のアイデアは、プリプロセッサディレクティブを使用することでした(これの名前はわかりません、http://msdn.microsoft.com/en-us/library/ed8yd1ha%28v=vs.71%29.aspxプロファイルに問題がある場所。プログラムは2回(プロファイルごとに)コンパイルし、ディレクティブとプロジェクト設定を別のプロファイルに手動で変更する必要があるという問題のみがあります。そして私の質問は:それは良い方法ですか?これを行う方法のより良い、よりきれいな方法はありますか?


参考までに:Shawn HargreavesによるReachとHiDefの違いは次のとおりです。
doppelgreener

ビューコードを分離し、戦略やファクトリなどのデザインパターンを使用して、リーチか非表示かに応じてオブジェクトを作成します。コードの残りの部分は同じでなければなりません。
ashes999

回答:


5

私はこれを機能させましたが、それを行うにはいくつかのMSBuildマジックを使用する必要があります。プロジェクトをバックアップすることを強くお勧めします。これを誤ると簡単に壊れてしまう可能性があります。

まず最初に、構成マネージャー(ALT + B + O)を開く必要があります。

次に、ゲームプロジェクト用に4つのビルド構成を作成する必要があります。私は私に名前を付けることを選んだDebugReachReleaseReachDebugHiDefReleaseHiDef

この後、プロジェクトを保存し、ソリューションエクスプローラーでプロジェクトを右クリックして、を押しますUnload Project。ここで、プロジェクトをもう一度右クリックして、を押しますEdit <projectname>.csproj。これは、プロジェクトの未加工のMSBuild構成です。

最初のPropertyGroupノードでは、子ノードXnaProfileann を見つけて行を削除する必要があります。次に、次のPropertyGroupようなノードを見つける必要があります。

  • <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'DebugReach|x86' ">
  • <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseReach|x86' ">
  • <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'DebugHiDef|x86'">
  • <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'ReleaseHiDef|x86'">

次のノードを追加します。DebugReachReleaseReach

  • <XnaProfile>Reach</XnaProfile>

次のノードを追加します。DebugHiDefReleaseHiDef

  • <XnaProfile>HiDef</XnaProfile>

その後、ファイルを保存して閉じ、プロジェクトを右クリックして、[再読み込み]をクリックします。ここで、使用するビルド構成に応じて、DebugまたはHiDefを使用します。開いて も違いは反映さProperties ませんが、ビルド時にテストできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.