2010-07-28 45 views
2

我已经成功地使用Winform Series 1Winform Series 2成功构建了我的winform内容,但是我的问题是,下次打开它时,如何将内容加载回编辑器。内容.xnb文件当前正被保存到临时文件夹中。无论如何要将内容重新加载到编辑器中,而不必再去创建每个文件?Winform XNA中的建筑内容

我可以将它保存到bin /文件夹内的Content文件夹,然后在启动时查看该文件夹并查找.xnb文件并加载它们?还是有更简单的方法呢?

回答

1

在第二个WinForms示例中,有一个HTML自述文件,描述应用程序如何将构建内容保存到临时目录,然后在程序关闭时将其删除。

这是最重要的一点:

根据您的应用程序,你可能更愿意总是使用相同的临时目录的名称,永不删除。这会将文件留在硬盘上。内容构建过程是增量式的。如果您的程序尝试加载之前运行过程中已经构建的相同内容文件,则不需要执行任何实际的处理工作。这可以加快程序的加载时间,例如可能希望每次启动时加载相同文件的关卡编辑器。

它说删除临时目录“由ContentBuilder.DeleteTempDirectory处理,这被称为Dispose”。因此,只需拨打DeleteTempDirectory即可将其删除。

自述文件更详细地描述了如何选择临时目录(以及为什么)。您可以修改CreateTempDirectory以更好地适应您的应用程序。例如,如果您的编辑器具有“级别”文件,您可能希望将您的构建内容(.xnb文件)保存在级别旁边的同名子目录中,以便您的游戏可以轻松打开构建的内容。


一旦你的文件被保存在会话之间 - 你所要做的就是重新加载它们。两种明显的方法是存储打开的文件列表,并在下一个会话中重新加载它。或者干脆开一切,这是你的输出目录:

下面是一些粗糙的代码做后者(假设没有子目录):

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

谢谢你的发言。这确实有帮助,虽然它不能解决我的问题。我想知道是否可以将那些已经构建的文件加载回编辑器而无需指定,或者我可以只查看文件夹并以这种方式加载它们? – 2010-07-28 07:20:20

+0

@Chris:我已经更新了我的回答,描述了如何做到这一点。 – 2010-07-28 11:36:59