Я пытаюсь сохранить серию объектов GameObject в списке. По какой-то причине каждый раз, когда я помещаю объект в список, он теряет ссылку на спрайт (становится нулевым). Все остальные данные объекта (позиция, цвет и т. Д.), Похоже, остаются в объекте просто отлично. Вот что я пытался:
static class Global
{
public static List<GameObject> objects = new List<GameObject>();
}
Это список, который я использую. Теперь для рассматриваемого объекта - игрок:
class Player : GameObject
{
public Vector2 position = Vector2.Zero;
public Texture2D sprite;
public Color image_blend = Color.White;
public Player() : base()
{
//nothing here, nothing in base class either
}
public void Draw(SpriteBatch spriteBatch)
{
spriteBatch.Draw(sprite, position, image_blend);
}
}
И, наконец, в моем основном классе XNA (важные фрагменты):
protected override void LoadContent()
{
spriteBatch = new SpriteBatch(GraphicsDevice);
sprPlayer = Content.Load<Texture2D>("player");
player = new Player();
player.sprite = sprPlayer;
Global.objects.Add(player);
}
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.Black);
spriteBatch.Begin();
for (int i = 0; i < Global.objects.Count; i++)
{
Global.objects[i].Draw(spriteBatch);
}
spriteBatch.End();
base.Draw(gameTime);
}
У меня такое чувство, что я могу поступить неправильно. Любая помощь приветствуется.