Diskuze: SpriteBatch is null

C# .NET .NET (C# a Visual Basic) SpriteBatch is null American English version English version

Avatar
Petr Nymsa
Redaktor
Avatar
Petr Nymsa:

Zdravím, začal jsem zkoušet MonoGame pro Win8. Je to prkaticky XNA s pár úpravama. Vytvořil sjem si třídu, respektive komponentu GameWorld

 class GameWorld : DrawableGameComponent
{
   ....
   Game1 game;
   SpriteBatch spriteBatch

   public GameWorld(Game1 game)
    :base(game)
   {
      this.game=game;
      this.spriteBatch= game.spritebatch;
   }

     public override void Initialize()
        {
            base.Initialize();
        }

        protected override void LoadContent()
        {
            tx_heli = content.Load<Texture2D>("helicopterDeath");

            player = new Player(tx_heli);
            base.LoadContent();
        }

        protected override void UnloadContent()
        {
            base.UnloadContent();
        }

        public override void Update(GameTime gameTime)
        {
            player.Update(game.Window);

            base.Update(gameTime);
        }

        public override void Draw(GameTime gameTime)
        {

            spriteBatch.Begin(); // zde to spadne
            player.Draw(spriteBatch);
            spriteBatch.End();

            base.Draw(gameTime);
        }

}

Komponentu zaregistruju v třídě 1 a přidám ji do Components.

this.Components.Add(world);

Hra spadne v metodě Draw ve třídě GameWorld. Spritebatch je null. Pokud odkážu přes game na spriteBatch, tedy

game.spriteBatch.Begin(); // zde to spadne
            player.Draw(game.spriteBatch);
            game.spriteBatch.End();

tak to funguje bez problémů. Nevíte, někdo kde by mohla být chyba ? Děkuji moc za odpovědi.

Odpovědět 1.3.2013 16:06
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Odpovídá na Petr Nymsa
Luboš Běhounek (Satik):

V tom konstruktoru je game.spriteBatch ještě null, takže do this.spriteBatch taky přiřadíš null.

Tohle přiřazení musí proběhnout až po tom, co v game.spriteBatch už něco je.

Nahoru Odpovědět 1.3.2013 16:34
:)
Avatar
Petr Nymsa
Redaktor
Avatar
Nahoru Odpovědět 1.3.2013 16:56
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
Petr Nymsa:

Rychleji se ptám než jednám :) . Samozřejmě že přiřadím až poté co se založí spriteBatch v Game1, tedy v metodě LoadContent. Nyní už funguje vše ok

Nahoru Odpovědět 1.3.2013 17:00
Pokrok nezastavíš, neusni a jdi s ním vpřed
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.