Ich versuche, eine SpriteManager
Klasse in XNA zu schreiben , benötige aber Zugriff auf die Game
Variablen. Zum Beispiel Game.Content
wäre die Eigenschaft beim Laden von Texturen sehr hilfreich und Game.GraphicsDevice.Viewport
beim Abrufen der Fenstergröße.
Im Moment habe ich folgende Klasse:
public MainGame : DrawableGameComponent
{
public SpriteManager<Enemy> EnemyManager { get; get; }
public SpriteManager<Powerup> PowerupManager { get; set; }
...
}
Ich kann mir drei Möglichkeiten vorstellen, um Zugriff auf diese Variablen in der SpriteManager
Klasse zu erhalten:
Lassen Sie meine Sprite-Manager-Klasse ableiten
GameComponent
. Dies wäre ideal, außer dass mein Sprite-Manager in verwendet wirdMainGame
, was a istGameComponent
.Verwenden Sie
((Game) Game1)
diese Option, um auf die Variablen zuzugreifen. Diese Art der Besetzung ist jedoch hässlich und unterbricht die Kapselung.Gib alles weiter von
MainGame
. BeispielsweiseEnemyManager
muss jedes Mal, wenn ein Feind erzeugt wird, ein zufälliger Feindtyp geladen werden. Übergeben Sie also die Eigenschaft , anstatt die Texturen zu ladenMainGame
, und lassen Sie sie das Laden der Textur übernehmen. Ich bin mir jedoch nicht sicher, ob dies der beste Weg ist, mit der Situation umzugehen. Ich kann meinen Finger nicht darauf legen, aber es scheint irgendwie "falsch" zu sein.EnemyManager
Game.Content
Ich könnte einige Ratschläge gebrauchen, wie dies am besten erreicht werden kann.