> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# IGameInputReading::GetGamepadState

> IGameInputReading::GetGamepadState

# IGameInputReading::GetGamepadState

检索一个描述游戏手柄状态的输入读数视图。

## 语法

```cpp theme={null}
bool GetGamepadState(
    GameInputGamepadState* state
);
```

### 参数

*state*   \_Out\_\\
类型：[GameInputGamepadState\*](/reference/input/gameinput/structs/gameinputgamepadstate)

将该输入解释为游戏手柄的结果。

### 返回值

类型：bool

如果成功将输入解释为游戏手柄，则返回 true。
当尝试读取无法识别为游戏手柄的输入时，返回 false。

## 备注

调用 [IGameInputReading::GetInputKind](/reference/input/gameinput/interfaces/igameinputreading/methods/igameinputreading_getinputkind) 方法可确定对于某个 [IGameInputReading](/reference/input/gameinput/interfaces/igameinputreading/igameinputreading)，哪些 Get\*State 函数会返回有效的解释。每个 Get\*State 函数在 [IGameInputReading::GetInputKind](/reference/input/gameinput/interfaces/igameinputreading/methods/igameinputreading_getinputkind) 枚举中都有一个对应项。如果你尝试调用某个 Get\*State 函数，但其对应的 [IGameInputReading::GetInputKind](/reference/input/gameinput/interfaces/igameinputreading/methods/igameinputreading_getinputkind) 标志未设置，该函数将返回默认的静止值以及 false 返回值。

以下 C++ 示例演示了如何读取游戏手柄状态。

```cpp theme={null}
void PlayerCrouch();
void PlayerStand();
void PlayerReload();
void PlayerMove(float, float);
void SetCameraOrientation(float, float);

void ProcessGamepadState(
    _In_ IGameInputReading * prevReading,
    _In_ IGameInputReading * currentReading) noexcept
{
    GameInputGamepadState prevState, currentState;
    prevReading->GetGamepadState(&prevState);
    currentReading->GetGamepadState(&currentState);

    GameInputGamepadButtons changedButtons = prevState.buttons ^ currentState.buttons;
    GameInputGamepadButtons pressedButtons = changedButtons & currentState.buttons;
    GameInputGamepadButtons releasedButtons = changedButtons ^ pressedButtons;

    if (pressedButtons & GameInputGamepadRightShoulder)
    {
        PlayerCrouch();
    }
    else if (releasedButtons & GameInputGamepadRightShoulder)
    {
        PlayerStand();
    }

    if (pressedButtons & GameInputGamepadLeftShoulder)
    {
        PlayerReload();
    }

    PlayerMove(currentState.leftThumbstickX, currentState.leftThumbstickY);
    SetCameraOrientation(currentState.rightThumbstickX, currentState.rightThumbstickY);
}
```

## 要求

[输入 API 概述](/build/core-features/common/input/overviews/input-overview)\
[IGameInputReading](/reference/input/gameinput/interfaces/igameinputreading/igameinputreading)\
[IGameInputReading::GetInputKind](/reference/input/gameinput/interfaces/igameinputreading/methods/igameinputreading_getinputkind)

## 版本历史

| 版本     | 更改  |
| ------ | --- |
| **v0** | 引入。 |


## Related topics

- [IGameInputReading::GetDevice](/zh-CN/reference/input/gameinput/interfaces/igameinputreading/methods/igameinputreading_getdevice.md)
- [IGameInputReading::GetKeyState](/zh-CN/reference/input/gameinput/interfaces/igameinputreading/methods/igameinputreading_getkeystate.md)
- [IGameInputReading::GetMouseState](/zh-CN/reference/input/gameinput/interfaces/igameinputreading/methods/igameinputreading_getmousestate.md)
- [IGameInputReading::GetMotionState](/zh-CN/reference/input/gameinput/deprecated/interfaces/igameinputreading/methods/igameinputreading_getmotionstate.md)
- [IGameInputReading::GetTouchState](/zh-CN/reference/input/gameinput/deprecated/interfaces/igameinputreading/methods/igameinputreading_gettouchstate.md)
