プレーヤーがコントロールを変更し、そのデータをテキスト ファイルに保存する方法を実装しようとしています。
私の 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;
}
私はこれに完全に行き詰まっています。これのいずれかが不明な場合はお詫びします。私の英語は最高ではありません。前もって感謝します。