多くのゲーム例/チュートリアルは、メイン ゲームのレンダリングのみに焦点を当てており、最初のランディング ページ、スプラッシュ スクリーン、ハイ スコア ページ、クレジット ページなど、ゲームの残りの部分は示していません。
DirectX や XNA などの場合、これらの他の画面はどのように作成/レンダリングされますか?
Davidsbro が言及した Microsoft のサンプルの代わりに、独自の基本的なゲーム状態管理システムを作成する場合は、enum スイッチを使用して作成できます。このアプローチでは、列挙型を宣言し、そのデフォルト値を設定します。この場合、デフォルト値はゲームのメイン メニューになる可能性があります。XNA では、これは次のようになります。
enum GameScene { menu, game };
GameScene scene = GameScene.menu;
ゲームの更新メソッド内で、両方の列挙状態の処理を担当する switch ステートメントを実装します。
protected override void Update(GameTime gameTime)
{
switch (scene)
{
case GameScene.menu:
{
// Perform menu scene logic
break;
}
case GameScene.game:
{
// Perform game scene logic
break;
}
}
base.Update(gameTime);
}
上記の enum スイッチと同様に、 draw メソッド内に別のスイッチを実装する必要があります。
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
switch (scene)
{
case GameScene.menu:
{
// Draw menu scene
break;
}
case GameScene.game:
{
// Draw game scene
break;
}
}
base.Draw(gameTime);
}
さらに、さまざまなゲーム ステート間を遷移するために何らかのロジックを実装する必要があります。これは、ユーザー入力または何らかの形式のゲーム タイマーによって実現できます。