我想使用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;
spriteContent = TextureContent.LoadListContent<Texture2D>(content,"textures");
现在,无论何时需要纹理,只需:
Whatever.Image = spriteContent["WhateverTexture"]
确保TextureName是纹理的资产名称.