0

変な書き方でしたらすみません。プログラミングにかなり慣れていないので、最初の年に行くので、助けが必要だと思いました.. グループで「終了画面」を取得しようとしていますが、実際にどうすればよいかわかりません。3 つのレベルがあり、最後の 3 番目のレベルの後に、「もう一度プレイしますか/終了しますか?」のような画面がポップアップ表示されます。これが私の問題です。単純に開始するだけで、どうすれば開始できますか? 私は自分自身を試してみて、オブジェクトの下に「EndScreen」という名前の SpriteFont を作成しました。後で「draw(GameTime)」でこれを行いました:

" // ゲームのエンディング画面を描画します

        switch (CurrentGameState)
        {
            case Gamestate.EndScreen:
                {
                    spriteBatch.Draw(Content.Load<Texture2D>("Sprites/Endscreen"), new Rectangle(0, 0, screenWidth, screenHeight), Color.White);
                    btnPlay.Draw(spriteBatch);
                    break; "

「到達不能なコードが検出されました」というエラーが表示されるようになりました。ステップごとに手順を教えていただければ幸いです。

見栄えが悪く、タイプエラーがある場合は申し訳ありません。私はスウェーデンに住んでいて、プログラミングとこのサイトは初めてです。また、コーディングを正しく行い、コードを適切な場所に配置したかどうかも疑問に思います。プログラミングについて非常に不安です

4

2 に答える 2

3

"あなたは休憩の後に余分を持っています

break は switch ステートメントから飛び出すため、コード パスがコードのこの部分に到達することはありません。単に削除すると、これが修正されます


void Update(GameTime g)
{
   CurrentGameState = GameState.EndScreen;
}
于 2014-04-09T09:07:51.763 に答える
0

あなたが尋ねた質問に対する答えを提供するつもりはありません(@sayseはすでにそれを完全にうまくやっています)が、あなたのコードが尋ねた質問です。

画像を描画するときは、次のコードを呼び出します。

spriteBatch.Draw(Content.Load<Texture2D>("Sprites/Endscreen"), new Rectangle(0, 0, screenWidth, screenHeight), Color.White);

これは、ゲームがその画像を画面に描画するすべてのフレームを意味し、「スプライト/エンドスクリーン」でテクスチャの新しいインスタンスにロードしようとしています。XNA はそれをロードしないことを認識できますが、すでにロードされているかどうかを確認するプロセスはやや遅くなります。すぐには気付かないかもしれませんが、そのような画面描画で十分な画像を取得すると、重大な「ラグ」またはフレームレートの低下に気付くでしょう。

この問題の適切な解決策は、このコードが呼び出されるクラスの先頭にフィールド (クラス メンバー変数) を作成することです。これを Texture2D にして、endScreen などの関連する名前を付けます。次に、LoadContent でテクスチャを endScreen オブジェクトにロードします。最後に、その Texture2D を使用するように spriteBatch.Draw() への呼び出しを変更しました。以下に、あなたがやりたいことの例を含めました。

//Fields
Texture2D endScreen;
//Load Content
endScreen = Content.Load<Texture2D>("Sprites/Endscreen");
//All Your Class Code
//Draw
spriteBatch.Draw(endScreen, new Rectangle(0, 0, screenWidth, screenHeight), Color.White);
于 2014-04-09T12:50:39.270 に答える