C# 加载不同级别的内容

C# 加载不同级别的内容,c#,static,xna,C#,Static,Xna,我正在制作一款XNA游戏,并使用此方法创建了新的关卡。 首先,我创建了一个名为Level的抽象类: public abstract class Level { public abstract void Update(GameTime gameTime); public abstract void Draw(SpriteBatch spriteBatch); } 在Game1对象中,我声明了一个公共静态级别currentLevel 在初始化它之后(比如:currentLevel=

我正在制作一款XNA游戏,并使用此方法创建了新的关卡。
首先,我创建了一个名为
Level
的抽象类:

public abstract class Level {
    public abstract void Update(GameTime gameTime);
    public abstract void Draw(SpriteBatch spriteBatch);
}
在Game1对象中,我声明了一个
公共静态级别currentLevel
在初始化它之后(比如:
currentLevel=newgameLevel()
),在
Game1.update
Game1.draw
中调用它的update和draw方法。当我想更改级别时,我会执行
Game1.currentLevel=new RandomLevel()
我在
Game1中加载所有关卡的纹理。通过调用我关卡中的
静态加载
方法加载内容。
我的实际水平如下所示:

class GameLevel : Level {

    Background sky = new Background(new Vector2(0, 0), -0.2f);
    Background land = new Background(new Vector2(0, 0), -0.2f);
    public static void Load()
    {
        ...
    }

    public override void Update(GameTime gameTime)
    {
        ...
    }
    public override void Draw(SpriteBatch spriteBatch)
    {
        ...
    }
}
我的问题:
如果我的纹理在关卡中是静态的,我可以用我在
Game1.LoadContent
中调用的静态加载方法加载它们。只有在有静态纹理的情况下,它才能正常工作(事实上,在我的其他关卡中也是如此)。但在这个级别,我有一个普通的背景对象。所以我不能用静态方法调用
sky.Load
land.Load
。我想创建很多不同纹理的背景。那么如何在
游戏级别开始时加载每个背景对象的纹理呢?

我想使用
DrawableGameComponent
并在
GameLevel
中继承它,但我不能。因为我已经继承了
级别
。我还知道
GameComponent
s已被弃用。

我在
Game1
中创建了一个静态
ContentManager
引用,并将
Game1
内容分配给它。然后,我使用该内容为
GameLevel
对象的构造函数中的
Background
对象加载纹理。我以前认为它不会起作用,因为我认为每个游戏只加载一次内容。(正如它在
LoadContent
方法的注释中所写的那样。它仍然有效。
如果有更好的方法,请告诉我