C#从DLL加载资源(ResourceManager)

时间:2011-12-15 16:32:38

标签: c# resources xna

我需要从Xna游戏中的DLL加载一些.Xnb文件。为此,有一个“ResourceContentManager”,它在构造函数中采用“ResourceManager”。那么如何将文件作为嵌入式资源添加到DLL并初始化ResourceManager?以下代码没有用(命名空间是“Mox”)

ResourceManager resourceManager = new ResourceManager("Mox", Assembly.GetExecutingAssembly());
Stream s = resourceManager.GetStream("Shader");
if(s == 0)
    throw new Exception();

我添加了资源“Shader.fx”和“Add-> Existing”,然后将Build设置为Embedded Resource并“始终复制”...这会抛出一个Exception,所以我知道它没有正确加载...有什么建议吗?

1 个答案:

答案 0 :(得分:2)

我在gamedev.stackexchange.com问了一个类似的问题。答案也可以帮到你,见下文:

除了Russell之外,我还有另一个解决方案,它允许您使用内容管理器,并允许您嵌入XNA支持的所有类型的内容。

XNA通过资源而不是内容项目支持ContentManager。要使用它,请执行以下操作。当然,您需要在某个时候传递游戏服务的参考。

ResourceContentManager Content = new ResourceContentManager(game.Services, Resource1.ResourceManager);

使用this将着色器或任何内容编译为xnb。

将任何和所有XNB添加到您的资源中。他们像往常一样只是加载你的内容。

Content.Load<Texture2D>(".\\assetName")