我已成功使用Winform Series 1和Winform Series 2将内容构建到我的winform中但我的问题是,如何在下次打开时将内容加载回编辑器中。内容.xnb文件当前正保存到临时文件夹。反正有没有将内容加载回编辑器而不必再次构建每个文件?
我可以将它保存到bin /文件夹内的Content文件夹中,然后在启动时查看该文件夹并查找.xnb文件并加载它们吗?或者有更简单的方法吗?
答案 0 :(得分: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));
}