Blog-Archive

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
%d Bloggern gefällt das: