加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 04:20:29 所属栏目:百科 来源:网络整理
导读:我想使用Content.Load(“filename”)将文件夹“Content / textures”中的所有文件加载到游戏中; 但是,我无法以这种方式“找到”位于Content内的文件(程序反而看“bin / debug /../ Content / textures”,但是在尝试加载jpg / png文件时遇到错误Content.Load.
我想使用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是纹理的资产名称.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读