2009-04-21 11 views
3

Je ne comprends pas vraiment comment l'importateur/processeur de contenu fonctionne dans XNA.Comment écrire un simple processeur de contenu .txt dans XNA?

J'ai besoin de lire un fichier texte (contenu/niveaux/level1.txt) de la forme:

x x 
x x 
x x 

où X sont tout entiers, dans un tableau int [,].

Des conseils sur l'écriture d'un importateur SIMPLE .txt ??? En cherchant google/msdn je n'ai trouvé que des exemples d'importateurs de fichiers .x/.fbx. Et ils semblent trop compliqués.

Répondre

10

Avez-vous réellement besoin de traiter le fichier texte? Sinon, vous pouvez probablement ignorer la majeure partie du pipeline de contenu.

Quelque chose comme:

string filename = "Content/TextFiles/sometext.txt"; 
string path = Path.Combine(StorageContainer.TitleLocation, filename); 

string lineOfText; 
StreamReader sr = new StreamReader(path); 
while ((lineOfText = sr.ReadLine()) != null) 
{ 
    // do something 
} 

Aussi, assurez-vous de définir les « Build action » à « None » et les « Copier vers Output Directory » à « Copier si plus récent » sur les fichiers texte que vous avez ajoutée. Cela indique au pipeline de contenu de ne pas compiler le fichier texte mais de le copier dans le répertoire de sortie pour l'utiliser tel quel.

J'ai obtenu ceci (plus ou moins) de l'exemple RacingGame fourni par Microsoft. Il renonce à une grande partie du pipeline de contenu et charge et traite simplement les fichiers texte (XML) pour la plupart de ses données de niveau.

2

Il ne semble pas y avoir beaucoup d'informations, mais cet article de blog indique comment charger des fichiers .txt via le code en utilisant XNA.

J'espère que cela peut vous aider à mettre le fichier en mémoire, à partir de là il devrait être facile de l'analyser comme vous le souhaitez.

XNA 3.0 - Reading Text Files on the Xbox

+0

Pourquoi ne puis-je le mettre dans le dossier contenu? Je l'ai mis là et sélectionné "Copier si plus récent" et peut le charger avec "Game.Content.RootDirectory" + "levels/level1.txt" path? – drozzy

+0

Merci, cela fonctionne! Tchad a écrit la réponse, donc je vais lui donner – drozzy