gpt4 book ai didi

c# - 加载文件夹中的所有 Texture2D

转载 作者:行者123 更新时间:2023-11-30 22:31:13 24 4
gpt4 key购买 nike

如何在我的 XNA 游戏中加载特定文件夹中的所有图像资源?纹理像往常一样位于内容项目中,但不是为我添加的每个新纹理逐行复制,而是自动加载它们的能力。

最佳答案

主要有两种方式

第 1 步:将图像从 1 重命名为 N,以便您可以在 for 循环中加载图像,例如

List<Texture2D> images = new List<Texture2D>();
string folderPath = "MyImages/";
for(int i= 0; i<Count; i++)
{
try
{
images.Add(Content.Load<Texture2D>(folderPath + i.ToString));
}
catch
{
break;
}
}

上面的代码适用于特定的计数,您可以将迭代更改为 while(true) 递增 i,如果没有更多图像,catch 博客将中断。

或使用它(将静态类放在游戏项目的命名空间中,而不是在任何子命名空间文件夹下)它会起作用。如果你不想扩展你的内容而不是从函数中删除“this”)

public static class MyExtension
{
public static List<T> LoadListContent<T>(this ContentManager contentManager, string contentFolder)
{
DirectoryInfo dir = new DirectoryInfo(contentManager.RootDirectory + "/" + contentFolder);
if (!dir.Exists)
throw new DirectoryNotFoundException();
List<T> result = new List<T>();

FileInfo[] files = dir.GetFiles("*.*");
foreach (FileInfo file in files)
{
result.Add(contentManager.Load<T>(contentFolder + "/" + file.Name.Split('.')[0]));
}
return result;
}
}

如果您的实际路径长度大于 256,则此代码有问题,该功能将不起作用。所以要小心。

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

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