gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 21:18:26 25 4
gpt4 key购买 nike

我想使用 Content.Load("filename");

将文件夹 "Content/textures" 中的所有文件加载到游戏中

但是,我无法通过这种方式“找到”位于 Content 中的文件(程序会查看 “bin/debug/../Content/textures”,但当尝试使用 Content.Load 加载 jpg/png 文件。

我怎样才能实现我想要做的事情?我想将 Content 内文件夹中的所有文件(哪个 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;
}
}

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

  public Dictionary<string, Texture2D> spriteContent;

...并在您的LoadContent 方法中调用该方法

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

现在只要你需要它的纹理,就可以:

Whatever.Image = spriteContent["WhateverTexture"]

确保 TextureName 是您的纹理的 Assets 名称。

关于c# - 如何使用 XNA 加载文件夹中的所有文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12914002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com