Jawaban yang "benar" dari perspektif rekayasa perangkat lunak/arsitektur adalah meneruskan sumber daya spesifik yang Anda perlukan sebagai parameter ke dalam metode Anda. Hal ini memberikan banyak keuntungan - mungkin keuntungan terbesarnya adalah memisahkan berbagai bagian kode Anda, sehingga memungkinkannya digunakan secara independen satu sama lain.
Sebagai contoh: Anda mungkin memiliki permainan Anda. Tapi kemudian Anda mungkin ingin mengambil kode yang sama dan membuat editor, atau pengujian unit, atau alat gila lainnya. Dalam banyak kasus, Anda bahkan mungkin tidak memiliki kelas Game
. (Sebagai contoh nyata, video saya ini menunjukkan kepada Anda dua cara yang sangat berbeda menjalankan kode permainan yang sama - ini tidak akan mungkin terjadi tanpa pemisahan yang tepat.)
(Atas dasar ini, Anda mungkin harus menyebarkan hal-hal yang lebih spesifik daripada kelas yang berasal dari Game
.)
Anda dapat melangkah lebih jauh, jika Anda memiliki persyaratan versi/ketergantungan yang cukup terbuka, dan meneruskan IServiceProvider
(misalnya, inilah yang diteruskan XNA ke konstruktor ContentManager
). Saya melakukan analisis mendetail tentang mengapa Anda melakukan ini dalam jawaban ini.
NAMUN
Anda tidak sedang menulis perpustakaan yang akan digunakan oleh pihak ketiga. Anda sedang menulis permainan. Satu-satunya orang yang akan menggunakan kode Anda adalah tim Anda sendiri - dan Anda memiliki akses ke kode sumber dan Anda dapat dengan bebas memodifikasinya.
Ini berarti Anda bebas mengambil beberapa jalan pintas.
Dalam praktiknya, biasanya boleh saja mengambil instance statis dari kelas game Anda, atau (dan ini adalah metode pilihan saya saat saya menyatukan sesuatu) properti statis dari kelas game Anda. Dan di XNA Anda tahu bahwa Anda hanya akan memiliki satu contoh kelas permainan dalam praktiknya.
Caranya cepat dan mudah. Dan juga cepat dan mudah untuk melakukannya nanti dan beralih melakukan sesuatu dengan cara yang "benar". Selama Anda siap menghadapinya. Kontrol versi yang baik dan penggunaan "Temukan Semua Referensi" di Visual Studio sangat membantu di sini.
Pada dasarnya: selama Anda memahami bahwa Anda mengambil jalan pintas, mengapa Anda mengambilnya, dan apa cara yang "benar" - maka boleh saja mengambil jalan pintas itu.
person
Andrew Russell
schedule
02.08.2012