0

XNA 用キットの入力のいくつかに目を通すと、パラメーターが 2 つあるものと 1 つしかないものがGSMあることに気付きました 。booleansなんで?両者に違いはありますか?

以下に 2 つの例を示し、その後にコード全体へのリンクを示します。

        /// <summary>
    /// Checks for a "pause the game" input action.
    /// The controllingPlayer parameter specifies which player to read
    /// input for. If this is null, it will accept input from any player.
    /// </summary>
    public bool IsPauseGame(PlayerIndex? controllingPlayer)
    {
        PlayerIndex playerIndex;

        return IsNewKeyPress(Keys.Escape, controllingPlayer, out playerIndex) ||
               IsNewButtonPress(Buttons.Back, controllingPlayer, out playerIndex) ||
               IsNewButtonPress(Buttons.Start, controllingPlayer, out playerIndex);
    }


    /// <summary>
    /// Checks for a "menu cancel" input action.
    /// The controllingPlayer parameter specifies which player to read input for.
    /// If this is null, it will accept input from any player. When the action
    /// is detected, the output playerIndex reports which player pressed it.
    /// </summary>
    public bool IsMenuCancel(PlayerIndex? controllingPlayer,
                             out PlayerIndex playerIndex)
    {
        return IsNewKeyPress(Keys.Escape, controllingPlayer, out playerIndex) ||
               IsNewButtonPress(Buttons.B, controllingPlayer, out playerIndex) ||
               IsNewButtonPress(Buttons.Back, controllingPlayer, out playerIndex);
    }

完全な InputState コード

4

2 に答える 2

2

最初の関数は、プレーヤーが一時停止ボタンを押したことを通知しますが、どのボタンを押したかは通知しません。2 番目の関数は、プレーヤーがメニューをキャンセルしたことと、どちらがキャンセルしたかを示します。それout PlayerIndex playerIndexがこの関数のパラメータです。

基本的に、開発者は、入力検出関数から受け取った情報を渡すかどうかを選択しました。

その理由については、どのプレイヤーがメニューを閉じるかを知ることが重要だと思います。たとえばウイニングイレブンでは、すべてのプレーヤーが自分の設定を行ってから、キャンセル メニュー ボタンを押します。メニューが実際に閉じるのは、両方のプレイヤーがキャンセル ボタンを押したときだけです。

誰が一時停止を要求したかについての情報は関係がないため、渡されません。

于 2012-05-14T00:10:08.477 に答える
1

入力を探す特定の人物を指定する場合は、プレイヤーの制御を使用します。指定されていない場合は、すべてのコントローラーを調べます。Player Index は、提供された入力を誰が押したかを示します。これが出力パラメータである理由です。

于 2012-05-14T00:09:11.360 に答える