XNA GameComponentsを選択的に更新するにはどうすればよいですか?


8

XNAで作業している小さな2Dゲームがあります。これまでのところ、私はプレイヤー制御船でベクタースラストを操作しており、円を描くように回転するのはとても楽しいです。私はこれを実装しましたDrawableGameComponentと使ったゲームでそれを登録しgame.Components.Add(これを)船舶オブジェクトのコンストラクタに。

現在の実装で一時停止やメニューシステムなどの機能を実装するにはどうすればよいですか?特定のGameComponentsを更新しないように設定することは可能ですか?

これは私がDrawableGameComponentを使用する必要があるものですか?そうでない場合、これのより適切な用途は何ですか?

回答:


6

ゲームコンポーネントのEnabledプロパティをfalseに設定できます。ゲームはそれを更新しません。また、Visibleプロパティをfalseに設定すると、ゲームは描画を指示しません。多くのゲームコンポーネントがある場合、これは一種の厄介なものになる可能性があります。いくつかのゲーム状態管理を使用し、ゲームコンポーネントを個別の状態に分割することを検討する必要がある場合があります。

そうすれば、ゲームプレイの一部であるゲームコンポーネントは、ゲームの状態が更新または描画しないように指示された場合などに、描画/更新しないように指示できます。

これはゲームの状態管理のかなり良い例です:ゲームの状態管理のサンプル

したがって、PlayScreen(ゲームプレイが含まれている状態)を持ち、PauseScreenをその上に置くことができます。PlayScreenは更新されませんが、描画されます。(またはその性質のもの)


2
したがって、EnabledプロパティとVisibleプロパティは、Update()メソッドとDraw()メソッドがそれぞれ呼び出されるかどうかを制御しますか?Visibleがfalseの場合、Draw()メソッドのコードは実行されますか、それとも単に呼び出されませんか?他に何か影響がありますか?
ビル

3
これらは呼び出されず、Update(Enabled)とDraw(Visible)にのみ影響します。
r2d2rigo

次に、これはまさに私が望んでいた機能です。ありがとう。
ビル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.