Bagaimana saya bisa secara selektif memperbarui XNA GameComponents?

8

Saya memiliki game 2D kecil yang sedang saya kerjakan di XNA. Sejauh ini, saya memiliki kapal yang dikendalikan pemain yang beroperasi pada dorong vektor dan sangat menyenangkan untuk berputar-putar. Saya telah menerapkan ini sebagai DrawableGameComponent dan mendaftarkannya ke permainan menggunakan game.Components.Add (ini) di konstruktor objek Kapal.

Bagaimana saya bisa mengimplementasikan fitur-fitur seperti jeda dan sistem menu dengan implementasi saya saat ini? Apakah mungkin untuk menetapkan GameComponents tertentu agar tidak diperbarui?

Apakah ini sesuatu yang saya bahkan harus menggunakan DrawableGameComponent? Jika tidak, apa gunanya yang lebih tepat untuk ini?

Tagihan
sumber

Jawaban:

6

Anda dapat mengatur properti Diaktifkan pada komponen game ke false. Game tidak akan memperbaruinya. Anda juga dapat mengatur properti Terlihat ke false dan gim tidak akan memerintahkannya untuk menggambar. Itu bisa menjadi berantakan ketika Anda memiliki banyak komponen gim. Anda mungkin ingin mempertimbangkan untuk menggunakan manajemen keadaan gim dan membagi komponen gim Anda menjadi status yang berbeda.

Dengan begitu komponen game yang merupakan bagian dari permainan dapat dikatakan untuk tidak menggambar / memperbarui ketika kondisi permainan diberitahu untuk tidak memperbarui atau menggambar, dll.

Ini adalah contoh yang cukup bagus dari manajemen kondisi gim: Contoh Manajemen Gim

Jadi, Anda dapat memiliki PlayScreen Anda (keadaan dengan permainan bermain di dalamnya) dan memiliki PauseScreen datang di atasnya. PlayScreen tidak akan diperbarui, tetapi masih akan menarik. (atau sesuatu seperti itu)

Michael Coleman
sumber
2
Jadi properti Diaktifkan dan Terlihat mengontrol masing-masing metode Pembaruan () dan Draw (), akan dipanggil? Jika Terlihat salah, apakah kode APAPUN dalam metode Draw () akan dijalankan atau tidak dipanggil? Apakah mereka memengaruhi hal lain?
Bill
3
Mereka tidak akan dipanggil, dan mereka hanya memengaruhi Pembaruan (Diaktifkan) dan Draw (Terlihat).
r2d2rigo
Maka inilah fungsi yang saya harapkan. Terima kasih.
Tagihan