C#DirectX DirectInput手柄编程实现教程

C# 中的 DirectX.DirectInput 库可以方便地与游戏手柄进行交互,以下是手柄编程的简单实现代码示例:

using System;
using Microsoft.DirectX.DirectInput;

class Gamepad
{
    private Device joystick;

    public Gamepad()
    {
        joystick = new Device(SystemGuid.Joystick); // 初始化手柄设备
        joystick.SetDataFormat(DeviceDataFormat.Joystick); // 设置数据格式
        joystick.SetCooperativeLevel(IntPtr.Zero, CooperativeLevel.Foreground | CooperativeLevel.Nonexclusive); // 设置手柄合作级别
        joystick.Acquire(); // 获取手柄设备
    }

    public void ReadInput()
    {
        while (true)
        {
            joystick.Poll(); // 执行轮询获取输入
            JoystickState state = joystick.CurrentJoystickState; // 获取手柄当前状态

            // 检测按钮按下
            if (state.IsPressed(0)) Console.WriteLine("Button 0 pressed");
            if (state.IsPressed(1)) Console.WriteLine("Button 1 pressed");

            // 读取方向
            Console.WriteLine($"X Axis: {state.X} Y Axis: {state.Y}");
        }
    }
}

class Program
{
    static void Main()
    {
        Gamepad gamepad = new Gamepad();
        gamepad.ReadInput(); // 启动手柄输入读取
    }
}

以上代码展示了如何在 C# 中通过 DirectInput 库创建手柄输入设备,并实时读取按钮和轴的状态。

**** 该示例实现了手柄的初始化、轮询及输入状态的获取。通过修改设备ID或状态处理代码,可以扩展为更复杂的游戏输入系统。

rar 文件大小:157.27KB