在C#中使用DirectX處理用戶輸入可以通過DirectInput來實現(xiàn)。下面是一個簡單的示例代碼,展示了如何使用DirectInput來處理鍵盤輸入:
using Microsoft.DirectX.DirectInput;
Device keyboard;
void InitializeInput()
{
DirectInput directInput = new DirectInput();
keyboard = new Device(SystemGuid.Keyboard);
keyboard.SetCooperativeLevel(this, CooperativeLevelFlags.Background | CooperativeLevelFlags.NonExclusive);
keyboard.Acquire();
}
void HandleInput()
{
keyboard.Poll();
KeyboardState state = keyboard.GetCurrentKeyboardState();
if (state[Key.W])
{
//處理按下W鍵的邏輯
}
if (state[Key.S])
{
//處理按下S鍵的邏輯
}
//處理其他按鍵的邏輯
}
在上面的示例中,首先通過DirectInput類創(chuàng)建了一個DirectInput對象,然后創(chuàng)建了一個鍵盤設(shè)備對象。在初始化階段,設(shè)置鍵盤設(shè)備的協(xié)作級別,并調(diào)用Acquire方法來獲取鍵盤設(shè)備。在處理輸入時,首先調(diào)用Poll方法來更新鍵盤設(shè)備的狀態(tài),然后通過GetCurrentKeyboardState方法獲取當前鍵盤狀態(tài)。最后根據(jù)鍵盤的狀態(tài)來處理相應(yīng)的邏輯。
除了鍵盤輸入外,DirectInput也可以處理鼠標、游戲手柄等其他輸入設(shè)備的輸入。在處理不同類型的輸入設(shè)備時,需要創(chuàng)建相應(yīng)的設(shè)備對象并進行相應(yīng)的設(shè)置。