0

是否有任何对象或函数可以遍历 XNA Content 中设置目录中的文件?

我的游戏内容目录中有一组图像,但随着项目的进行,我将添加更多图像。但是,我不想每次添加新图像时都必须添加一行代码,如果我能够遍历目录中的每个文件并将它们加载到数组中会更好。有没有办法做到这一点?

4

2 回答 2

3

您可以使用这种方便的扩展方法

public static class Extension Methods
{
        public static List<T> LoadContentFolder<T>(this ContentManager contentManager, string contentFolder)
        {
            DirectoryInfo dir = new DirectoryInfo(contentManager.RootDirectory + "/" + contentFolder);
            if (!dir.Exists)
                throw new DirectoryNotFoundException();
            List<T> result = new List<T>();

            FileInfo[] files = dir.GetFiles("*.*");
            foreach (FileInfo file in files)
            {
                result.Add(contentManager.Load<T>(contentFolder + "/" + file.Name.Split('.')[0]));
            }
            return result;
        }
}

如果您不想扩展类,请从构造函数中删除“this”关键字。你可以像这样使用它:

Dictionary<string,Texture2D> folderContent = Content.LoadContentFolder<Texture2D>("FolderName");

FolderName 只是您的内容文件夹中的一个子文件夹

并通过做访问folderContent["MyAssetName"]

于 2013-01-09T20:56:58.290 回答
1

不在 XNA 4.0 中。MS 决定在 XNA 3.1 中隐藏一些使这成为可能的方法。这是一个示例项目,它显示了一个供您查看的解决方法——它最终在构建过程中构建了一个文件列表,这是一个杂乱无章的问题,但我认为它可以让您到达您想要的位置。

内容清单扩展示例

于 2013-01-09T16:56:27.890 回答