興味深い問題に遭遇したとき、XNA プロジェクトの 1 つを 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 が提供しているかどうかはわかりません。できるだけ多くのコンテンツを動的にロードしたいので、これが実行できることを願っています。