我試圖實現一種方法讓玩家更改控件,然後將該數據保存到文本文件。C#XNA鍵盤輸入問題。代碼總是返回false
只有我的InputManager類使用Xna.Input.Keys枚舉,其他所有獲得鍵盤輸入傳遞的字符串。 InputManager包含一個字典,其中的鍵是從外部傳入的動態字符串,並且該值是Input.Keys枚舉中的相應鍵。
所有這些都是從一個文件(keyconfig.cfg,只是一個標準的文本文件)加載。
我試着以各種方式修改代碼,但我似乎無法讓它正常工作。這個問題似乎是未來礦的該特定方法中,這是輸入管理的一部分:
public bool IsButtonPressed(string keyString)
{
if (keyState.IsKeyDown(KeyFromString(keyString)) && keyState_old.IsKeyUp(KeyFromString(keyString)))
return true;
return false;
}
- KeyFromString連鑄字符串到按鍵型
- keyState & keyState_old是KeyboardState實例(_old作爲一個最後一幀圖像)
- 的KeyboardState實例通過更新()
我設置我的keyState更新每一幀在輸入管理像這樣的更新()內個keyState_old變量:
public void Update(GameTime gameTime)
{
keyState = Keyboard.GetState();
mouseState = Mouse.GetState();
//Updates some other stuff within the class here, unrelated to keyboard input
keyState_old = keyState;
}
我絕對被困在此,道歉,如果任何的這個不清楚,我的英語不是最好的。提前致謝。
第一:爲KeyFromString操作引入變量,因此您可以檢查是否解析了有效的鍵,然後檢查語句的第一部分是否滿足,然後是第二個。調試應該給你答案。 – wudzik
@wudzik感謝您的快速回復。增加了變量,並且每次都得到正確的密鑰。 經過一些調試後,我發現我的keyState由於某種原因沒有更新,並且只包含默認值。 – R4PTURExDCT
你能發佈獲取keyStates的代碼嗎?我假設你正在使用Keyboard.GetState() – gareththegeek