フォルダからすべてのコンテンツを読み込む


8

私が聞きたいのですが、フォルダからすべてのコンテンツをxnaにロードする方法はありますか?
たとえば、私のコンテンツには次の ようなものがあります:

画像/ヒーロー
画像/車の
画像/ツリー


このようなものを作りたい

Dictionary<string,Model> models = new ...

foreach(string name in content.getNames("Images"))
{
    models[name] = content.load<Model>("Images\\" + name);
}

回答:


3

便利なディレクトリアクセス方法に関する優れたMSDNページがあり、StackOverflowで同様の質問が寄せられています。

基本的に、そのディレクトリにあるファイルを見つけ、そのサイズの配列を初期化してから、それらのファイルを反復処理してリソースにロードします。


これは静的ではありませんが、XNAで一般的に使用されるGameクラスにContentプロパティがあります。
マイケルコールマン

実際にリンクした答えは、クラスの拡張メソッドですContentManager。したがって、それをとして使用しますContent.LoadContent<Texture2D>("myFolder")。上のContentプロパティGameは、単にContentManagerクラスのインスタンスです-任意のインスタンスを使用できます。(これについてはXNAバージョン間で何も変更されていません。)
Andrew Russell

@Andrewありがとうございます!虚偽の無意味なメモを削除しました。
Anko


0

フォルダ内のすべてのファイルを簡単にリストして、1つずつロードすることができます。デフォルトでは、すべてのコンテンツファイルはメインアプリケーションのすぐ隣のフォルダに保存されるため、その方向のコンテンツを確認するだけで済みます。すべてのディレクトリからすべてのファイルをロードする場合は、再帰関数を使用することもできます。ここに小さなサンプルがあります:

string[] files = Directory.GetFiles("content\\Images");
for (int i = 0; i < files.Count(); i++)
{
    textures.Add(Content.load<Texture2D>(files[i].Remove(0,"Content\\".Length)));
}

コンテンツシステムにテクスチャをロードするように要求する場合は、ファイル名から「content」フォルダを削除する必要があることに注意してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.