[Unity] ビルドしたときだけキーボードで操作できないという不可解な現象
ある日の出来事
それなりに動くものが出てきたし、そろそろビルドしてスタンドアロン実行させてみるか~。
……うん? あれ?
キーボード操作で自キャラが動かない。
でもゲームパッド入力は受け付ける。
……なんで???
エディター上では動く
エディター上では再現しません。むしろ再現していたらもっと早くに気付く。
切り分け開始です。まずはいつから発生していたのか?
バージョン管理にGitを使用しているので適当なコミットをチェックアウトして再現確認を繰り返します。再現する、再現する……割と初期から再現するな???
どうやら入力移動の仕組みを実装した当初から存在した不具合のようです。全然気づいてなかったよ。
入力処理にはInputSystemを使用しています。しかし割と基本的な使い方しかしていないはずなのにどうしてこんなことが? どうにも原因が思いつきません。
そんなときはあいつの助けを借りてみよう。
助けて~ChatGPTえも~ん
というわけでざっくりとした質問をChatGPTへ丸投げ。
気になったのは3番目。
InputSysytemの設定にこのような項目を発見しました。
確かにこのゲームはキーボード操作とゲームパッド操作を想定しています。これは一見正しく見える。
しかしInputActionsのスキーマ定義を見てみると。
Keyborad&Mouseになっています。実際、UI要素はマウス操作も想定している。
そしてさらにこのスキーマを編集しようとしてみると。
はい、見つけましたね。使用するデバイスにマウスが存在していて、さらに Required となっています。これはすなわち、マウスが接続されていなければこのスキーマは使用されない、ということでしょう。知らんけど。
となると、最初の Supported Devices にもマウスが必要なのでは? と推測できます。
追加してみました。
動作を確認すると……動いた!
結論: スキーマ定義とデバイス設定を確認しよう
というわけで、Input System が認識するデバイスにInput Actionのスキーマが要求するデバイスが含まれていなかったことが原因でした。
「このゲームはWindows想定でタッチ操作は不要だから」などとと考えてデバイス種別を変更した際には、うっかりマウスまで消さないようにしましょう。
この記事が気に入ったらサポートをしてみませんか?