加载不同级别的内容
本文关键字:加载 | 更新日期: 2023-09-27 18:01:12
我正在构建一个XNA游戏,我已经用这种方法创建了新的关卡
首先,我创建了一个名为Level
:的抽象类
public abstract class Level {
public abstract void Update(GameTime gameTime);
public abstract void Draw(SpriteBatch spriteBatch);
}
在Game1对象中,我声明一个public static Level currentLevel;
初始化后(如:currentLevel = new GameLevel()
(,在Game1.Update
和Game1.Draw
中调用它的update和draw方法。当我想更改级别时,我执行Game1.currentLevel = new RandomLevel()
我通过在我的级别中调用static Load
方法来加载Game1.LoadContent
中所有级别的纹理
我的实际水平如下:
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
中调用的静态load方法中加载它们。只有在有静态纹理的情况下,它才能正常工作(事实上,在我的其他级别中也是如此(。但在这个层次上,我有一个正常的背景对象。所以我不能在静态方法中调用sky.Load
和land.Load
。我想创建许多具有不同纹理的背景。那么,如何在GameLevel
开始时为我的每个背景对象加载纹理呢
我想使用DrawableGameComponent
并在GameLevel
中继承它,但我做不到。因为我已经继承了Level
。我还了解到GameComponent
已被弃用。
我在Game1
中创建了一个静态ContentManager
引用,并将Game1
的Content
分配给它。然后,我使用该内容在GameLevel
对象的构造函数中加载Background
对象的纹理。我以前不认为它会起作用,因为我认为每个游戏只加载一次内容。(正如LoadContent
方法的注释中所写的那样。它仍然有效。
如果有更好的方法,请告诉我。