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. 我怎样才能实现我想做的事情? 谢谢. 解决方法
您可以使用此帮助程序类来执行此操作.它的工作原理是获取给定目录并使用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是纹理的资产名称. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |