Unity
キー入力

Unity - 入力されたキーの情報を取得する

More than 1 year has passed since last update.


はじめに

キー入力において、入力したキーの情報を取得するシステムがなかったので書きました。

今回は押されたキーのKeyCodeを取得していきます。

必要な知識

- foreach

- enum

以上二つです。知らない方は軽く調べてから読んでいただけると理解が深まるかと思います。

※知らなくてもいけます。


方針


  1. まずキーが押されているかどうかを確認します。

  2. 特定のキーであれば押されているかチェックできるのでそれを全キーについて行います。

  3. 押されたキーに応じて処理を行います。

    以上の3ステップで行います。重要なのは2.ですね。


解説

先に全体のコードを記載します

using System.Collections;

using System.Collections.Generic;
using UnityEngine;

//enumを使うために必要
using System;

public class DownKeyChecker : MonoBehaviour {

void Update () {
DownKeyCheck ();
}

void DownKeyCheck(){
if (Input.anyKeyDown) {
foreach (KeyCode code in Enum.GetValues(typeof(KeyCode))) {
if (Input.GetKeyDown (code)) {
//処理を書く
Debug.Log (code);
break;
}
}
}
}

}

以上が全体です。細かく見ていきます。


using System; 

これはenum型を使うのに必要なのでおまじないして書いておきましょう。


if (Input.anyKeyDown)

ここで何かキーが押されているかの判定をします。ここを書かないと毎フレームごとに全てのキーをチェックしてしまうので処理が重くなります。書いておきましょう。


foreach (KeyCode code in Enum.GetValues(typeof(KeyCode)))

ここが命ですね。

foreach文はある配列やリストに格納されている要素一つ一つに一回ずつアクセスすることのできる分です。

今回の場合はcodeという変数にKeyCodeを一つずつ取り出して代入してきます。


if (Input.GetKeyDown (code))

ここで押したキーがcodeと同じであるかをチェックしています。

全てのKeyCodeに一回ずつアクセスしてくれますから、必ずどれかには引っかかってくれるわけですね。


Debug.Log (code);

今回は押されたときの処理として簡潔かつわかりやすいようにDebug.Log()を選択しました。


break; 

一度処理に入ればこれ以降処理に入ることは無いのでここでbreakし、foreach文を抜けます。


終わりに

最後まで読んでいただきありがとうございます。

ここで書いたコードがいずれどこかのコードで活躍してくれれば幸いです。

間違いや修正箇所等あればコメントまでお願いします。