2014-02-16 25 views
0

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

回答

1

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

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

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

也可以实现自定义类为DrawableGameComponent和指定的内容将在LoadContent()阶段被加载,所有重写的方法将被称为automaticaly当它的时间给他们打电话。做这样的水木清华:

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

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

您可以在游戏类添加成分是这样的:

Components.Add(new Class1(this)); 

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

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

所以从我个人理解,有直接实例ContentManager进入游戏库中没有_actual_方式,而对于天秤座内部的部件负荷资产直接使用它,而不依赖于你使用游戏库的游戏。这是正确的吗? –

相关问题