Table of Contents

键盘

初级 程序员

**键盘(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;
			}
		}
	}
}

另请参阅