如何将内容项目集成到XNA类库中

时间:2014-02-16 08:51:25

标签: c# xna class-library

我正在尝试创建一个供个人使用的小型XNA控件库,我想为组件提供默认纹理。问题是我不知道如何在xna类库中包含内容项目并从该类库访问它以获取这些纹理。这甚至可能吗?如果是的话,怎么办呢?

1 个答案:

答案 0 :(得分:1)

您可以通过右键单击Visual Studio Solution窗口中的项目标题并选择添加内容项目... (假设内容项目已添加到您的XNA库中)来将内容项目添加到XNA库你的解决方案)。

如果要使用内容项目提供的资源,则必须将 Game :: Content 属性传递到库类构造函数中,并以与在常见XNA中相同的方式加载所有资源应用

public class Class1
{
    public Class1(ContentManager content)
    {
        var tex = content.Load<Texture2D>("test");
    }
}

或者您可以将自定义类实现为 DrawableGameComponent ,并且指定的内容将在 LoadContent()阶段加载,并且所有重写方法将在其调用时自动调用他们。像这样做:

public class Class1: DrawableGameComponent
{
    public Class1(Game game)
        : base(game)
    {
    }

    protected override void LoadContent()
    {
        var tex = this.Game.Content.Load<Texture2D>("test");
    }
}

您可以在Game类中添加组件,如下所示:

Components.Add(new Class1(this));

PS:如果你使用不同的内容项目,你可能需要在类库中加载纹理之前指定根目录内容文件夹,如下所示:

this.Game.Content.RootDIrectory="<ENTER CONTENT PROJECT NAME HERE>";