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));
}
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? –
@Chris: J'ai mis à jour ma réponse pour décrire comment faire cela. –