リストに一連のGameObjectを格納しようとしています。何らかの理由で私がリストにオブジェクトを置くたびに、スプライトの参照が失われます(nullになります)。他のすべてのオブジェクトデータ(位置、色など)は、オブジェクト内にそのまま残っているようです。ここで私が試してきたことがあります:Playerオブジェクトがリストに配置されたときにテクスチャを失う
static class Global
{
public static List<GameObject> objects = new List<GameObject>();
}
これは私が使っているリストです。今、問題のオブジェクトのために - プレイヤー:私のメインのXNAクラス(重要なスニペット)で
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);
}
}
そして最後に:
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);
}
私はこのことについて間違った道を進んですることができる感覚を持っています。どんな助けもありがとうございます。
問題が見つかりました。私は 'GameObject'に' Draw'メソッドと 'Update'メソッドを' virtual'と宣言していなかったので、Playerクラスによって正しくオーバーライドされていませんでした。ご協力いただきありがとうございます! –