0

取り組んでいたゲームの開発を再開し、チート シートを使用して XNA 4.0 に正常に変換しました。ほとんどは機能しますが、機能しないものもあり、機能しないものを修正中です。

私が持っていたのは、電子ブックである XNA Unleashed の例として使用された状態システムに大きく基づいた状態システムでした。私はそれに多くを持っていませんでした....基本的には、ゲームを一時停止する機能だけです.

ゲームを一時停止すると、ゲームのアクションが停止し、「PAUSED」という単語が画面全体にブロック文字で表示され、一時停止したアクションが表示されます。ただし、スプライト バッチがフレーム間のすべてを自動的にクリアするようになったので、ゲームを一時停止すると画面がクリアされ、紫色の背景の上に一時停止が残ります。当時、「SaveStateMode.SaveState」を追加するとそれが起こらないと思いましたが、その機能は削除されました。調査を行ったところ、本質的に役に立たないため削除されたことがわかりました。これはすべて、ゲーム状態マネージャーで処理されます。

ただし、これに関するドキュメントは見つかりません。どこから始めればよいですか?現在、私のコードは次のようになっています。

Playing Game State update メソッドでは:

    if (input.WasPressed(0, Buttons.Start, Keys.Enter))
    {
        GameManager.PushState((GameState)ThisGame.PausedGameState.Value);
    }

    public void PushState(GameState newState)
    {

        AddState(newState);

        //Let everyone know we just changed states
        if (OnStateChange != null)
        {
            OnStateChange(this, null);
        }
    }

    private void AddState(GameState state)
    {
        states.Push(state);

        Game.Components.Add(state);

        //Register the event for this state
        OnStateChange += state.StateChanged;
    }

//PausedGameState Draw method:

    public override void Draw(GameTime gameTime)
    {
        ThisGame.SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, null, null, null, null);
        DrawPaused();  //draws the Paused Text
        ThisGame.SpriteBatch.End();
    }

目標は、ゲームプレイが中断された場所のスナップショットと共に、画面上に「PAUSED」が表示されるようにすることです...透明な紫色の画面上に「PAUSED」ではありません。

4

1 に答える 1

0

状態が一時停止に変わった後、 GraphicsDevice.Clear() が何らかの形で呼び出されたと思いますか? DrawPaused() メソッドはコードで何をしますか?

于 2012-10-17T17:34:11.323 に答える