我正在尝试为播放器实现一种更改控件的方法,然后将该数据保存到文本文件中。
只有我的 InputManager 类使用 Xna.Input.Keys 枚举,其他所有获取键盘输入的内容都以字符串形式传递。InputManager 包含一个字典,键是从外部传入的动态字符串,值是 Input.Keys 枚举中的对应键。
所有这些都是从一个文件(keyconfig.cfg,只是一个标准文本文件)中加载的。
我尝试以各种方式修改代码,但我似乎无法让它正常工作。问题似乎来自我的这种特殊方法,它是 InputManager 的一部分:
public bool IsButtonPressed(string keyString)
{
if (keyState.IsKeyDown(KeyFromString(keyString)) && keyState_old.IsKeyUp(KeyFromString(keyString)))
return true;
return false;
}
- KeyFromString 将字符串转换为 Keys 类型
- keyState 和 keyState_old 是 KeyboardState 实例(_old 是最后一帧的图像)
- KeyboardState 实例通过 Update() 更新每一帧
我在 InputManager 的 Update() 中设置我的 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;
}
我完全坚持这一点,如果有任何不清楚的地方,我深表歉意,我的英语不是最好的。提前致谢。