Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# XNA ContentLoadException使用DLL中的load命令在主项目中加载纹理时发生_C#_Xna_Xna 4.0 - Fatal编程技术网

C# XNA ContentLoadException使用DLL中的load命令在主项目中加载纹理时发生

C# XNA ContentLoadException使用DLL中的load命令在主项目中加载纹理时发生,c#,xna,xna-4.0,C#,Xna,Xna 4.0,我刚刚开始尝试编写一个非常初级的游戏引擎,首先在XNA的2d世界中显示简单的瓷砖。这是我第一次编写DLL,在我尝试为ContentManager编写LoadAll函数之前一切都很顺利,这导致了我现在遇到的问题。我得到一个ContentLoadException,即使文件明显存在,否则程序将无法进入内容加载阶段 XNB文件肯定存在,并且Content.RootDirectory已设置。我已经通过了每一个像这样的问题,我可以在这里和其他网站上找到,但找不到任何解决办法。如果有人能帮忙,我将永远感激

我刚刚开始尝试编写一个非常初级的游戏引擎,首先在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;
    }
我找到了这段代码,但即使将其改写为列表形式,我也会遇到同样的错误。奇怪的是,加载“文件路径”时出错,显示了指向确实存在的xnb文件的正确路径。如果有人想要我的DLL的源代码,我可以轻松上传

谢谢

编辑:我真的应该这么说:

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

向Content.Load()方法传递了错误的路径
dir.ToString()
将返回完整路径(包括内容的根目录)。但您需要不带根目录的路径:

result[key] = Content.Load<T>(directory + "/" + key); 
result[key]=Content.Load(目录+“/”+key);

谢谢,我已经仔细研究了很久了。新手失误!
result[key] = Content.Load<T>(directory + "/" + key);