需要nuget安装SharpDX.XInput
// 保存上一次获取的控制器状态
State previousState = new State();
State currentState = new State();
Controller controller = new Controller(UserIndex.One);
while (true) {
// 获取控制器状态
controller.GetState(out currentState);
// 检查按钮状态
if (previousState.Gamepad.Buttons != currentState.Gamepad.Buttons) {
// 按键状态发生了改变
if (currentState.Gamepad.Buttons.HasFlag(GamepadButtonFlags.A)) {
// A 按钮按下
Console.WriteLine("A 按钮按下");
} else if (currentState.Gamepad.Buttons.HasFlag(GamepadButtonFlags.A) && !previousState.Gamepad.Buttons.HasFlag(GamepadButtonFlags.A)) {
// A 按钮按住不放
Console.WriteLine("A 按钮按住不放");
} else if (!currentState.Gamepad.Buttons.HasFlag(GamepadButtonFlags.A) && previousState.Gamepad.Buttons.HasFlag(GamepadButtonFlags.A)) {
// A 按钮释放
Console.WriteLine("A 按钮释放");
}
// 更新上一次的状态
previousState = currentState;
}
}