44 lines
1.1 KiB
Markdown
44 lines
1.1 KiB
Markdown
|
|
# InputManager::IsAnyKeyPressed
|
||
|
|
|
||
|
|
查询是否存在任意键盘键或鼠标按键在本帧刚被按下。
|
||
|
|
|
||
|
|
```cpp
|
||
|
|
bool IsAnyKeyPressed() const;
|
||
|
|
```
|
||
|
|
|
||
|
|
## 行为说明
|
||
|
|
|
||
|
|
当前实现会:
|
||
|
|
|
||
|
|
- 如果未初始化,返回 `false`
|
||
|
|
- 先扫描 `m_keyDownThisFrame`
|
||
|
|
- 再扫描 `m_mouseButtonDownThisFrame`
|
||
|
|
- 任一数组里存在 `true` 就返回 `true`
|
||
|
|
|
||
|
|
因此它表达的是“按下边沿”,而且同样会把鼠标按键算进 any-key 统计。
|
||
|
|
|
||
|
|
还要注意两点:
|
||
|
|
|
||
|
|
- 它不是“任意输入设备”。当前只统计键盘和鼠标按钮,不包含触摸、滚轮或文本输入。
|
||
|
|
- 键盘侧当前不会过滤 `repeat`。如果平台在后续帧继续发送重复 `KeyDown`,只要 `m_keyDownThisFrame` 被再次写入,它仍会返回 `true`。
|
||
|
|
|
||
|
|
## 返回值
|
||
|
|
|
||
|
|
- `bool` - 当前帧是否存在任意键盘键或鼠标按键刚被按下。
|
||
|
|
|
||
|
|
## 示例
|
||
|
|
|
||
|
|
```cpp
|
||
|
|
if (XCEngine::Input::InputManager::Get().IsAnyKeyPressed()) {
|
||
|
|
// ...
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
## 相关文档
|
||
|
|
|
||
|
|
- [返回类型总览](InputManager.md)
|
||
|
|
- [IsAnyKeyDown](IsAnyKeyDown.md)
|
||
|
|
- [IsKeyPressed](IsKeyPressed.md)
|
||
|
|
- [IsMouseButtonClicked](IsMouseButtonClicked.md)
|
||
|
|
- [ProcessKeyDown](ProcessKeyDown.md)
|