2010-07-28 4 views
2

J'ai réussi à créer du contenu dans mon winform en utilisant Winform Series 1 et Winform Series 2 mais ma question est, comment obtenez-vous le contenu à être chargé dans l'éditeur la prochaine fois que vous l'ouvrez. Le contenu, .xnb, est en cours d'enregistrement dans un dossier temporaire. Y a-t-il un moyen de récupérer le contenu dans l'éditeur sans avoir à reconstruire chaque fichier?Création de contenu dans Winform XNA

Pourrais-je simplement l'enregistrer dans le dossier Contenu du dossier/bin, puis parcourir ce dossier au démarrage et rechercher des fichiers .xnb et les charger? ou y a-t-il un moyen plus facile d'y parvenir?

Répondre

1

Dans le deuxième exemple WinForms, un fichier readme HTML décrit comment l'application enregistre le contenu généré dans un répertoire temporaire, puis le supprime à la fermeture du programme.

Ceci est le bit important:

En fonction de votre application, vous pouvez préférez utiliser toujours le même nom de répertoire temporaire, et ne jamais le supprimer. Cela laissera des fichiers sur votre disque dur. Le processus de création de contenu est incrémentiel. Si votre programme tente de charger les mêmes fichiers de contenu qui ont déjà été créés lors d'une exécution précédente, vous n'aurez pas besoin d'effectuer de travail de traitement. Cela peut accélérer les temps de chargement pour les programmes tels que les éditeurs de niveau susceptibles de vouloir charger les mêmes fichiers chaque fois qu'ils démarrent.

Il dit que la suppression du répertoire temporaire « est gérée par ContentBuilder.DeleteTempDirectory, qui est appelé par Dispose ». Il suffit donc de trouver l'appel au DeleteTempDirectory et de l'enlever.

Le fichier Lisez-moi décrit plus en détails comment le répertoire temporaire est sélectionné (et pourquoi). Vous pouvez modifier CreateTempDirectory en fonction de votre application. Par exemple, si votre éditeur a des fichiers de "niveau", vous pouvez sauvegarder votre contenu construit (fichiers .xnb) dans un sous-répertoire avec le même nom, à côté de votre niveau, afin que votre jeu puisse facilement ouvrir le contenu construit. Une fois que vos fichiers sont conservés entre les sessions, tout ce que vous avez à faire est de les recharger. Les deux moyens évidents sont de stocker une liste des fichiers qui sont ouverts, et de recharger la prochaine session. Ou simplement tout ouvert qui est dans votre répertoire de sortie:

Voici une partie difficile à faire de celle-ci (en supposant qu'aucun des sous-répertoires):

string folder = @"C:\TemporaryXNAFilesOrWhatever"; 
List<Texture2D> textures = new List<Texture2D>(); 
ContentManager content = new ContentManager(serviceProvider, folder); 
string[] files = Directory.GetFiles(folder, "*.xnb"); 
foreach(string file in files) 
{ 
    string assetName = Path.GetFileNameWithoutExtension(file); 
    textures.Add(content.Load<Texture2D>(assetName)); 
} 
+0

Merci pour cette déclaration. Cela aide bien que cela ne résout pas mon problème. Je me demandais s'il était possible de sauvegarder les fichiers déjà créés dans l'éditeur sans avoir à les spécifier, ou est-ce que je pourrais simplement regarder dans le dossier et les charger de cette façon? –

+0

@Chris: J'ai mis à jour ma réponse pour décrire comment faire cela. –

Questions connexes