2009-08-05 6 views
4

Ich arbeite an einem Spiel mit dem XNA-Framework. Mein Spiel hat mehrere Ebenen, auf denen ich die Daten in einer einfachen alten Textdatei ablege. In VS 2008, wenn ich die Level-Datei zum Projekt hinzufügen und kompilieren, erhalte ich die folgende Fehlermeldung.XNA Framework Importers

Fehler 1 Kann den Importeur für "Levels \ 0.txt" nicht automatisch erkennen. Es gibt keine Importeure, die diesen Dateityp verarbeiten. Geben Sie das Importprogramm an, das diesen Dateityp in Ihrem Projekt verarbeitet. F: \ Projekte \ BrickBreaker \ BrickBreaker \ Inhalt \ Levels \ 0.txt BrickBreaker

Der Grund, warum ich das herausbringe ist, weil wenn ich ein Level ändere und das Spiel starte, das Level nicht aktualisiert wird. Ich habe festgestellt, dass die Ebene nicht aktualisiert wird, da VS das Spiel aus dem Ordner bin \ debug ausführt und da die Ebenendateien nicht im Projekt enthalten sind, werden sie nicht kopiert, wenn sie sich ändern. Ich fand auch, dass das Plattform-Beispiel, das mit dem Framework geliefert wird, die Level-Daten im Projekt enthält, woher ich die Technik habe.

Also, sollte ich ein anderes Dateiformat verwenden oder einfach damit umgehen, dass ich die neuen Level-Dateien manuell kopieren muss?

Auflösung - Nach dem Graben in die Antworten auf diesen Beitrag fand ich eine Lösung. Ich habe die Textdateien zum Projekt hinzugefügt und die Build-Eigenschaft auf none gesetzt. Der Fehler tritt nicht mehr beim Kompilieren auf und die Datei ist im Projekt enthalten.

+0

Ich würde die Ebenen in das Projekt aufnehmen. – Nifle

+0

Wahrscheinlich müssen Sie die Textdateien der Ebenen als eine Abhängigkeit des Projekts oder eines seiner Module konfigurieren. Es wäre leicht mit einem Makefile zu machen, aber da ich mit VS nicht vertraut bin, werde ich das nicht beantworten. Hinterlasse diesen Kommentar nur als Hinweis für jeden, der es besser weiß. – Spidey

Antwort

2

Es gibt keinen Inhaltsimporteur für Textdateien. Ignorieren Sie die Inhalts-Pipeline und lesen Sie die Datei genau so wie jede andere normale Textdatei.

string line = string.empty; 
using(StreamReader sr = new StreamReader("filename")){ 
    while((line = sr.ReadLine()) != null){ 
     //reads line by line until eof 
     //do whatever you want with the text 
    } 
} 
+0

Danke für die Antwort. Ich habe am Ende meines ursprünglichen Beitrags weitere Kommentare hinzugefügt. Irgendwelche Gedanken zu den neuen Kommentaren? – user151190

8

Sie können Visual Studio nur über die Dateien kopieren, wenn Sie das Ausgabeverzeichnis möchten. Wählen Sie unter den Eigenschaften der Textdatei im Projekt Build Action: None, und ändern Sie die Kopie in das Ausgabeverzeichnis nach Bedarf.

Sie können auch die Platformer Probe überprüfen. Sie verwenden Textdateien als ihr Ebenenformat.

+0

Das hat wirklich geholfen! Vielen Dank – BigBug

0

Ich hatte ein ähnliches Problem und fand es einfacher, die Dateien zum Inhaltsprojekt hinzugefügt zu haben und action set auf none zu setzen, als die Inhalts-Pipeline ganz zu überspringen.