LoginSignup
28
20

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-01-31

はじめに

キー入力において、入力したキーの情報を取得するシステムがなかったので書きました。
今回は押されたキーの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文を抜けます。

終わりに

最後まで読んでいただきありがとうございます。
ここで書いたコードがいずれどこかのコードで活躍してくれれば幸いです。
間違いや修正箇所等あればコメントまでお願いします。

28
20
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
28
20