Saya mencoba menulis SpriteManager
kelas di XNA, tetapi saya perlu akses ke Game
variabel. Misalnya, Game.Content
properti akan sangat membantu dalam memuat tekstur, dan Game.GraphicsDevice.Viewport
akan sangat membantu dalam mendapatkan ukuran jendela.
Untuk saat ini, saya memiliki kelas berikut:
public MainGame : DrawableGameComponent
{
public SpriteManager<Enemy> EnemyManager { get; get; }
public SpriteManager<Powerup> PowerupManager { get; set; }
...
}
Saya dapat memikirkan tiga cara untuk mendapatkan akses ke variabel-variabel ini di SpriteManager
kelas:
Buat kelas manajer sprite saya berasal
GameComponent
. Ini akan ideal, kecuali bahwa sprite manager saya digunakanMainGame
, yaitu aGameComponent
.Gunakan
((Game) Game1)
untuk mengakses variabel. Namun, melakukan pemeran seperti ini jelek dan merusak enkapsulasi.Catat semuanya dari
MainGame
. Misalnya,EnemyManager
perlu untuk memuat musuh acak ketik setiap kali memunculkan musuh, jadi bukan memuat tekstur diMainGame
, lulusEnemyManager
padaGame.Content
properti dan biarkan menangani tekstur pemuatan. Namun, saya tidak yakin apakah ini cara terbaik untuk menangani situasi ini. Saya tidak bisa meletakkan jari saya di atasnya, tetapi sepertinya 'salah' dalam beberapa hal.
Saya bisa menggunakan beberapa saran tentang cara terbaik untuk mencapai ini.