MonoGame 3.6 の UWP10 プロジェクトでキーボード操作を行うと遅延する

通常 Keyboard.GetState メソッドでキーボードの状態を取得すれば現フレームの段階でのキーの押下状態を取得できます。一度に複数のキーを同時に押しても問題ありません(キーボードの配線によってはキー同時押下の上限はあります)。

しかし、UWP10 のプロジェクトを作成し、Windows 10 の環境で実行すると、押下状態を瞬時に取得することはできず、段階的に1キーずつ取得されるような動作になってしまいます。しかも、しばらく押したままにして離すと、一定時間押下中判定のままになってしまい、その後これまた段階的に1キーずつ放すような状態の取得を行います。

ちなみに UWP8.1 のプロジェクトで同じ処理を行うとまったく問題はありません。

参考にその動作を録画してみたので、実際に見てみるとわかると思います。最初が UWP8.1 のプロジェクトでそのあとが UWP10 のプロジェクトでの動作です。

この件についてコミュニティで探してみると同じような報告があり、どうやら MonoGame 3.6 での Windows 10 用の実装に問題があるようです。3.6 リリース後に修正したとの書き込みがあり、とりあえず修正したものを使いたい場合は開発ビルド版を使ってくださいとのことですが、ダウンロードページでそれをダウンロードしようとしてもファイルが見つからないようでした (リンクミス?)。

とりあえずは現状で我慢するか、開発版を探す、UWP8.1 を使う、3.7 を待つのいずれかになりそうです。私はずっと UWP8.1 版を使っていたので気づきませんでした( ^ ^;)。

]]>