Я создаю игру 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
, Когда я хочу изменить уровень, я делаю Game1.currentLevel = new RandomLevel()
Загружаю свои текстуры для всех своих уровней в Game1.LoadContent
, вызывая метод static Load
на моих уровнях.
Мои фактические уровни выглядеть следующим образом:
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)
{
...
}
}
Моя проблема:
Если мои текстуры статичны в уровнях, я могу загрузить их в свой статический метод Load, который я называю в Game1.LoadContent
. Он отлично работает, только если есть статические текстуры (на самом деле, это работает на моих других уровнях). Но на этом уровне у меня нормальные фоновые объекты. Поэтому я не могу позвонить sky.Load
и land.Load
в статическом методе. Я хочу создать много фонов с разными текстурами. Итак, как мне загрузить текстуру для каждого из моих фоновых объектов в начале GameLevel
?
Я думал об использовании DrawableGameComponent
и наследовал его в GameLevel
, но я не могу. Потому что я уже унаследовал Level
. Я также узнал, что GameComponent
s устарели.