我想创建一个定义游戏关卡的类。它必须能够访问主游戏类使用的数据(纹理)。我该怎么办?
namespace xnagame
{
class Level
{
blockTexture1, blockTexture2;
Content.RootDirectory = "Content";
void LoadTextures()
{
blockTexture1 = Content.Load<Texture2D>("textures/block1");
blockTexture2 = Content.Load<Texture2D>("textures/block2");
}
}
下面是我项目的图片。我需要从“Level”类访问存储在“xnagameContent / textures”中的数据http://cs403723.userapi.com/v403723602/5635/Pq5jGApDYCU.jpg
答案 0 :(得分:1)
听起来像dependency injection的理想情况。您可以在构造函数中传入对Content
类的引用,或者将其作为公共属性,例如。
public class Level
{
public Level(Content content)
{
Content = content;
}
public Content Content { get; set; }
}
答案 1 :(得分:0)
试试这个......
主要方法:
Level level = new xnagame.Level(this.Content);
level.LoadTextures();
自定义级别类:
namespace xnagame
{
public class Level
{
public Texture2D blockTexture1,
public Texture2D blockTexture2;
public ContentManager content;
public Level(ContentManager content)
{
this.content = content;
}
public void LoadTextures()
{
this.blockTexture1 = this.content.Load<Texture2D>("textures/block1");
this.blockTexture2 = this.content.Load<Texture2D>("textures/block2");
}
}
}
答案 2 :(得分:0)
我不是xna专家,但我认为如果从Game派生你的类,Xna ContentManager对象是可用的。内容是Game类的属性。见http://msdn.microsoft.com/en-us/library/bb203875.aspx
如果要分离加载代码并将其放入Level类,则可以传递使用主游戏类的Content属性获取的ContentManager实例。