Initialisierung von GameComponents

Eine GameComponent oder DrawableGameComponent zu erzeugen ist sehr einfach. Man leitet seine Klasse ganz einfach von einer der beiden Basisklassen ab und fügt die eigene Klasse zur Komponentenauflistung der Game-Klasse hinzu.

Dies ist sehr praktisch, da nun Update, Draw, Initialize und LoadContent (soweit vorhanden) werden nun automatisch aufgerufen.

Hier gibt es allerdings eine Kleinigkeit zu beachten. Initialize und LoadContent werden nur dann korrekt aufgerufen, wenn die Initialisierung der Game-Klasse noch nicht abgeschlossen ist. Dies geschieht in der Methode Initialize durch Aufruf von base.Initialize.

Richtig ist also folgendes:

protected override void Initialize()
{
  // Komponenten hier hinzufügen, da sonst Initialize und LoadContent NICHT aufgerufen werden
  Components.Add(myComponent);

  base.Initialize();
}

EDIT: Korrektur. Das beschriebene Verhalten tritt in XNA 3.1 und 4.0 nur für LoadContent auf.

Advertisements

Veröffentlicht am 25.02.2010 in Grundlagen, XNA, XNA 3.1, XNA 4.0 und mit , , , , , , , getaggt. Setze ein Lesezeichen auf den Permalink. Ein Kommentar.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: