C# 加载不同级别的内容
我正在制作一款XNA游戏,并使用此方法创建了新的关卡。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=
首先,我创建了一个名为
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
方法的注释中所写的那样。它仍然有效。
如果有更好的方法,请告诉我