XNA 4-Spiel für beide Profile

7

Ich schreibe ein Spiel in XNA 4 und diese Version hat zwei Profile in HD und Reichweite. Mein Problem ist, dass ich meinen Spielcode für jedes dieser Profile haben muss und es sehr unangenehm ist, zwei Projekte zu haben und alle Änderungen in beiden vorzunehmen. Meine Idee war, die Präprozessor-Direktive zu verwenden (ich bin mir über den Namen nicht sicher, http://msdn.microsoft.com/en-us/library/ed8yd1ha%28v=vs.71%29.aspx ) und die IF-Anweisung unter zu verwenden Orte mit Problemen mit dem Profil. Es gibt nur ein Problem, dass das Programm zweimal (für jedes Profil) kompiliert und die Direktiven- und Projekteinstellungen manuell in ein anderes Profil geändert werden müssen. Und meine Fragen sind: Ist das ein guter Weg? Gibt es eine bessere und sauberere Möglichkeit, dies zu tun?

Vodáček
quelle
Nur zur Veranschaulichung : Hier sind die Unterschiede zwischen Reach & HiDef nach Shawn Hargreaves.
Doppelgreener
Isolieren Sie einfach Ihren Ansichtscode und verwenden Sie ein Entwurfsmuster wie Strategie oder Factory, um Objekte zu erstellen, je nachdem, ob es sich um Reichweite oder Verstecken handelt. Der Rest Ihres Codes sollte der gleiche sein.
Asche999

Antworten:

5

Ich habe das zum Laufen gebracht, aber Sie müssen etwas MSBuild-Magie verwenden, um es zu tun. Ich empfehle Ihnen dringend, Ihr Projekt zu sichern, da Sie leicht etwas kaputt machen können, wenn Sie dies falsch machen.

Zuerst müssen Sie den Konfigurationsmanager ( ALT + B + O) öffnen .

Dann müssen Sie vier Build-Konfigurationen für Ihr Spielprojekt erstellen. Ich entschied mich für mein zu nennen DebugReach, ReleaseReach, DebugHiDefund ReleaseHiDef.

Anschließend speichern Sie Ihr Projekt, klicken im Lösungs-Explorer mit der rechten Maustaste auf das Projekt und klicken dann auf Unload Project. Klicken Sie nun erneut mit der rechten Maustaste auf das Projekt und klicken Sie auf Edit <projectname>.csproj. Dies ist die unformatierte MSBuild-Konfiguration Ihres Projekts.

Im ersten PropertyGroupKnoten müssen Sie den untergeordneten Knoten XnaProfileann finden und dann die Zeile löschen. Als nächstes müssen Sie die PropertyGroupKnoten finden, die so aussehen:

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

In DebugReachund ReleaseReachfügen Sie den folgenden Knoten hinzu:

  • <XnaProfile>Reach</XnaProfile>

In DebugHiDefund ReleaseHiDeffügen Sie den folgenden Knoten hinzu:

  • <XnaProfile>HiDef</XnaProfile>

Danach speichern Sie die Datei, schließen sie, klicken mit der rechten Maustaste auf das Projekt und klicken auf Neu laden. Abhängig von der verwendeten Build-Konfiguration verwenden Sie jetzt entweder Debug oder HiDef. Bitte beachten Sie, dass das Öffnen Properties nicht den Unterschied widerspiegelt, Sie es jedoch beim Erstellen testen können.

William Mariager
quelle