如何使用 Monogame 正确获取文件夹中的所有纹理?
How do I properly get all textures within a folder withing Monogame?
我是 C# 和 Monogame 的新手,我正在尝试通过提供纹理文件夹中的精灵数组来制作 SpriteLoop 功能,您可以在其中播放精灵。我正在尝试下面给出的代码,但是当我尝试使用 spriteBatch.Draw
绘制精灵时,如下所示:
spriteBatch.Begin();
foreach(Texture2D texture in spriteLoop)
spriteBatch.Draw(texture, new Vector2(0,0), Color.White);
spriteBatch.End();
base.Draw(gameTime);
没有任何反应,我确保将图像文件包含在文件夹中,甚至在我控制台记录它们时它们也会显示出来。请帮我找出代码中的具体错误。任何帮助表示赞赏。谢谢!
public static class TextureContent
{
public static List<Texture2D> TexturesFromFolder(this ContentManager contentManager, GraphicsDevice graphics, string contentFolder)
{
//System.Console.WriteLine("./Content/"+contentFolder);
DirectoryInfo dir = new DirectoryInfo(contentManager.RootDirectory+"/"+contentFolder);
if(!dir.Exists)
throw new DirectoryNotFoundException();
List<Texture2D> result = new List<Texture2D>();
FileInfo[] files = dir.GetFiles("*.*");
foreach(FileInfo file in files)
{
string key = Path.GetFileName(file.Name);
System.Console.WriteLine(key);
//result.Add(contentManager.Load<Texture2D>(contentFolder + "/" + key));
FileStream fileStream = new FileStream(contentManager.RootDirectory+"/"+contentFolder+"/"+key, FileMode.Open);
Texture2D spr = Texture2D.FromStream(graphics, fileStream);
}
return result;
}
}
如果您在 TexturesFromFolder 方法中检查 foreach 循环的结尾,您会发现您确实在从流中加载纹理,但实际上从未将它添加到结果列表中。这意味着你总是 return 一个空列表。
我是 C# 和 Monogame 的新手,我正在尝试通过提供纹理文件夹中的精灵数组来制作 SpriteLoop 功能,您可以在其中播放精灵。我正在尝试下面给出的代码,但是当我尝试使用 spriteBatch.Draw
绘制精灵时,如下所示:
spriteBatch.Begin();
foreach(Texture2D texture in spriteLoop)
spriteBatch.Draw(texture, new Vector2(0,0), Color.White);
spriteBatch.End();
base.Draw(gameTime);
没有任何反应,我确保将图像文件包含在文件夹中,甚至在我控制台记录它们时它们也会显示出来。请帮我找出代码中的具体错误。任何帮助表示赞赏。谢谢!
public static class TextureContent
{
public static List<Texture2D> TexturesFromFolder(this ContentManager contentManager, GraphicsDevice graphics, string contentFolder)
{
//System.Console.WriteLine("./Content/"+contentFolder);
DirectoryInfo dir = new DirectoryInfo(contentManager.RootDirectory+"/"+contentFolder);
if(!dir.Exists)
throw new DirectoryNotFoundException();
List<Texture2D> result = new List<Texture2D>();
FileInfo[] files = dir.GetFiles("*.*");
foreach(FileInfo file in files)
{
string key = Path.GetFileName(file.Name);
System.Console.WriteLine(key);
//result.Add(contentManager.Load<Texture2D>(contentFolder + "/" + key));
FileStream fileStream = new FileStream(contentManager.RootDirectory+"/"+contentFolder+"/"+key, FileMode.Open);
Texture2D spr = Texture2D.FromStream(graphics, fileStream);
}
return result;
}
}
如果您在 TexturesFromFolder 方法中检查 foreach 循环的结尾,您会发现您确实在从流中加载纹理,但实际上从未将它添加到结果列表中。这意味着你总是 return 一个空列表。