键盘
初级 程序员
**键盘(Keyboard)**是桌面游戏最常见的输入设备。Stride 中有两种处理键盘输入的方式:
- 查询按键状态
- 使用 KeyEvent 列表
你可以在 input 基类中访问这两种方式。有关这些选项的更多信息,请参见输入概述。
检查键盘是否可用
处理键盘输入之前,请使用 Input.HasKeyboard 检查是否连接了键盘。
获取按键状态
你可以使用以下方法查询按键状态和状态变化:
| 方法 | 说明 |
|---|---|
| IsKeyDown(Keys) | 检查指定按键是否处于按下状态。 |
| IsKeyPressed(Keys) | 检查指定按键自上次更新以来是否被按下。 |
| IsKeyReleased(Keys) | 检查指定按键自上次更新以来是否被释放。 |
Note
Stride 不支持获取经过解释的按键,例如特殊字符和大写字母。
获取按键事件
在某些情况下,你想知道当前处于_按下_状态的所有按键,或自上次更新以来被_按下_过的所有按键。按键状态 API 不适合这种情况,因为你必须分别查询每个可用的按键。
此时,请使用 Input 基类中提供的按键事件集合。
| 公共列表 | 说明 |
|---|---|
| InputManager.DownKeys | 获取上次更新中处于按下状态的按键列表。 |
| InputManager.PressedKeys | 获取上次更新中被按下的按键列表。 |
| InputManager.ReleasedKeys | 获取上次更新中被释放的按键列表。 |
| InputManager.KeyEvents | 获取上次更新中的按键事件列表(被按下或释放的按键)。 |
每个 @'Stride.Input.KeyEvent' 都有两个属性:@'Stride.Input.KeyEvent.Key'(受影响的按键)和 @'Stride.Input.ButtonEvent.IsDown'(按键的新状态)。
示例代码
public class KeyboardEventsScript : SyncScript
{
//声明的公共成员变量和属性会显示在 Game Studio 中。
public override void Update()
{
//在每次更新时执行操作
if (Game.IsRunning)
{
if (Input.IsKeyDown(Keys.Left))
{
this.Entity.Transform.Position.X -= 0.1f;
}
if (Input.IsKeyDown(Keys.Right))
{
this.Entity.Transform.Position.X += 0.1f;
}
}
}
}