当我遇到一个有趣的问题时,我正在将我的一个 XNA 项目移植到 Monogame 中。由于作为 Windows 8 用户,我的应用程序是沙盒的,因此我不能使用我习惯使用的 Directory.GetFiles 方法来提取内容目录中的文件列表。我的目标是获取内容目录中的文件列表,例如 (myappinstalllocation\Content\TypeofContent\XmlFiles)。
在 Xna 我会使用:
string[] skillFiles = Directory.GetFiles(path, "*.xml");
我从 msdn 尝试了以下代码,但异步方法有时会在几分钟内无法返回,有时根本不会:
string[] fileNames = SystemIO.getFileNames(path, "xml").Result;
public static async Task<string[]> getFileNames(string pPath, string pExt)
{
List<string> results = new List<string>();
StorageFolder folder = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFolderAsync(pPath);
IReadOnlyList<StorageFile> contents = await folder.GetFilesAsync();
foreach (StorageFile file in contents)
{
if (file.FileType.Contains(pExt))
{
results.Add(file.Name);
}
}
return results.ToArray();
}
我不知道 MonoGame 是否提供了一种获取文件名的方法,或者 WinStore API 是否提供。我想尽可能多地动态加载我的内容,所以我希望这是可行的。