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