なにか特定のキーが押されたときではなくて、ざっくり「数字キーの中からどれかが押された時」とか「A、B、C、D、Eの中からどれかが押されたとき」のタイミングでキーが押された判断をしつつ、どのキーが押されたか、みたいな感じにしたい時の実装の備忘録です。
private KeyCode[] _key = new KeyCode[] { KeyCode.Alpha0, KeyCode.Alpha1, KeyCode.Alpha2, KeyCode.Alpha3, KeyCode.Alpha4, KeyCode.Alpha5, KeyCode.Alpha6, KeyCode.Alpha7, KeyCode.Alpha8, KeyCode.Alpha9 }; private int _pushKeyNum; public bool IsNumberKeyDown() { if (Input.anyKeyDown) { for(int i = 0; i < _key.Length; i++) { if (Input.GetKeyDown(_key[i])) { _pushKeyNum = i; return true; } } } else { return false; } return false; } public int KeyNumber() { if (IsNumberKeyDown()) { return _pushKeyNum; } else { return 0; } }
解説
private KeyCode[] _key = new KeyCode[] { KeyCode.Alpha0, KeyCode.Alpha1, KeyCode.Alpha2, KeyCode.Alpha3, KeyCode.Alpha4, KeyCode.Alpha5, KeyCode.Alpha6, KeyCode.Alpha7, KeyCode.Alpha8, KeyCode.Alpha9 };
数字キーの中からどれかが押されたとき、とか これらのキーの中からどれかが押された時、みたいな判断をするために、キーの配列に判断するためのキーを格納しておきます。
今回の例では数字キーを入れておきました。
if (Input.anyKeyDown) { for(int i = 0; i < _key.Length; i++) { if (Input.GetKeyDown(_key[i])) { _pushKeyNum = i; return true; } } }
まずInput.anyKeyDownでなにかしらキーが押されたことを判断し、
そのあとfor文で配列に入っているキーをチェックし、押したキーが配列のなかに入っているものであればtrueを返しています。
今回は数字キーが押されたあと、どの数字が押されたのかを判断したかったので、
int型の_pushKeyNumに押されたキーを数字で格納しています。
後からその数字を数字として使用したかったのでint型にし、配列に入れてる数字の順番と配列番号が一致するのでここではiを入れています。
以上です。