0

XNA の 2D ワールドに単純なタイルを表示することから始めて、非常に初歩的なゲーム エンジンのプログラミングを試してみました。DLL を作成するのはこれが初めてで、ContentManager の LoadAll 関数を作成しようとするまではすべてうまくいっていましたが、それが現在の問題につながっています。ファイルが明らかに存在していても、プログラムがコンテンツの読み込み段階に到達しないため、ContentLoadException が発生します。

XNB ファイルは確実に存在し、Content.RootDirectory が設定されています。私はこのようなすべての質問を経験してきましたが、ここと他のサイトの両方で見つけることができ、解決策が見つかりません. 誰かが助けてくれたら、私は永遠に感謝します.

    public static Dictionary<String, T> LoadAll<T>(this ContentManager Content, string directory)
    {
        DirectoryInfo dir = new DirectoryInfo(Content.RootDirectory + "/" + directory);
        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] = Content.Load<T>(dir.ToString() + "/" + key);
        }
        return result;
    }

明らかに、Content.Load メソッドでエラーが発生しています。

"Error loading "Content\Tiles\bricktile". File not found."

このコードはこちらで見つかりましたが、リスト形式に書き直しても同じエラーが発生します。奇妙な部分は、Error Loading "path to file" が、確実に存在する xnb ファイルへの正しいパスを示していることです。私の DLL のソースが必要な場合は、簡単にアップロードできます。

ありがとう!

編集:私がこれをどのように呼ぶかを本当に言ったはずです:

textures = Content.LoadAll<Texture2D>(tilesFolder);
4

1 に答える 1

1

Content.Load<>() メソッドに間違ったパスを渡します。dir.ToString()完全なパス (コンテンツのルート ディレクトリを含む) を返します。ただし、ルート ディレクトリのないパスが必要です。

result[key] = Content.Load<T>(directory + "/" + key); 
于 2012-06-08T12:26:11.953 に答える