SpriteManager
XNAでクラスを記述しようとしていますが、Game
変数にアクセスする必要があります。たとえば、Game.Content
プロパティはテクスチャのロードに非常に役立ちGame.GraphicsDevice.Viewport
、ウィンドウサイズを取得するのに役立ちます。
今のところ、私は次のクラスを持っています:
public MainGame : DrawableGameComponent
{
public SpriteManager<Enemy> EnemyManager { get; get; }
public SpriteManager<Powerup> PowerupManager { get; set; }
...
}
SpriteManager
クラスでこれらの変数にアクセスするには、3つの方法が考えられます。
私のスプライトマネージャークラスをから派生させ
GameComponent
ます。これは私のスプライトマネージャがで使用されていることを除いて、理想的ですMainGame
、GameComponent
。((Game) Game1)
変数にアクセスするために使用します。ただし、この種のキャストを行うことは醜く、カプセル化を壊します。からすべてを渡します
MainGame
。たとえば、EnemyManager
は敵をスポーンするたびにランダムな敵タイプをロードする必要があるため、でテクスチャをロードする代わりに、プロパティをMainGame
渡しEnemyManager
てGame.Content
テクスチャのロードを処理させます。しかし、これが状況を処理する最良の方法であるかどうかはわかりません。指を置くことはできませんが、ある意味「間違っている」ように見えます。
これを達成するための最良の方法についていくつかのアドバイスを使用できます。