1

我想创建一个定义游戏关卡的类。它必须能够访问主游戏类使用的数据(纹理)。我该怎么做?

namespace xnagame
{

class Level
{
  blockTexture1, blockTexture2;
  Content.RootDirectory = "Content"; 
   void LoadTextures()
    { 
      blockTexture1 = Content.Load<Texture2D>("textures/block1");
      blockTexture2 = Content.Load<Texture2D>("textures/block2");
    }
}

下面是我的项目的图片。我需要从“级别”类访问存储在“xnagameContent/textures” http://cs403723.userapi.com/v403723602/5635/Pq5jGApDYCU.jpg中的数据

4

3 回答 3

1

听起来像是依赖注入的理想案例。您可以在构造函数中传递对您的Content类的引用或使其成为公共属性,例如

public class Level
{
    public Level(Content content)
    {
        Content = content;
    }

    public Content Content { get; set; }
}
于 2013-01-05T23:33:29.093 回答
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");
        }
    }
}
于 2013-01-05T23:28:21.263 回答
0

我不是 xna 专家,但我认为如果您从 Game 派生类,则可以使用 Xna ContentManager 对象。内容是 Game 类的属性。请参阅http://msdn.microsoft.com/en-us/library/bb203875.aspx

如果您想分离加载代码并将其放在 Level 类中,您可以传递使用主游戏类的 Content 属性获得的 ContentManager 的实例。

于 2013-01-05T23:47:00.420 回答