c# – 如何使用XNA加载文件夹中的所有文件?

前端之家收集整理的这篇文章主要介绍了c# – 如何使用XNA加载文件夹中的所有文件?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想使用Content.Load(“filename”)将文件夹“Content / textures”中的所有文件加载到游戏中;

但是,我无法以这种方式“找到”位于Content内的文件(程序反而看“bin / debug /../ Content / textures”,但是在尝试加载jpg / png文件时遇到错误Content.Load.

我怎样才能实现我想做的事情?
我想将Content内部文件夹中的所有文件(哪个内容文件夹是正确的?)加载到游戏中,这样我就不必指定每一个纹理.

谢谢.

解决方法

您可以使用此帮助程序类来执行此操作.它的工作原理是获取给定目录并使用GetFiles()方法创建需要加载的所有纹理的列表.然后使用您的ContentManager正常加载它们,并将它们放入字典中以便您可以使用它们.
public static class TextureContent
    {
        public static Dictionary<string,T> LoadListContent<T>(this ContentManager contentManager,string contentFolder)
        {
            DirectoryInfo dir = new DirectoryInfo(contentManager.RootDirectory + "/" + contentFolder);
            if (!dir.Exists)
                throw new DirectoryNotFoundException();
            Dictionary<String,T> result = new Dictionary<String,T>();

            FileInfo[] files = dir.GetFiles("*.*");
            foreach (FileInfo file in files)
            {
                string key = Path.GetFileNameWithoutExtension(file.Name);


                result[key] = contentManager.Load<T>(contentFolder + "/" + key);
            }
            return result;
        }
    }

创建一个字典来存储纹理,而不是一行一行的Texture2Ds

public Dictionary<string,Texture2D> spriteContent;

…并在LoadContent方法调用方法

spriteContent = TextureContent.LoadListContent<Texture2D>(content,"textures");

现在,无论何时需要纹理,只需:

Whatever.Image = spriteContent["WhateverTexture"]

确保TextureName是纹理的资产名称.

猜你在找的C#相关文章