【Unity】InputSystemでソースコードによるキーボード押下検知する方法

Unity

はじめに

今日はUnityについて勉強していきます。

InputSystemで入力検知はInputActionファイルを作ってそれをアタッチしてスクリプト書いて・・・という手順がクソ長くなります。

従来のInputだとInput.GetKeyDown(XXX)という要領で書けたので簡単だったんですよねー。

じゃあ従来のInput使えよという話なんですが、それは言わんでください(笑)

今回はInputSystemのコードだけで完結する検知方法を共有したいと思います。

旧式と新式の両方のコードを載せて比較できるようにしています。

環境

この記事の情報は次のバージョンで動作確認しています。

* MacOS Monterey (12.1)
* Unity (2021.3.2f1)

InputSystemとは

InputSystemは以前解説していますので良かったらそちらもみていただけると助かります。

www.m2game.net

キーを押した瞬間を検知する方法

using UnityEngine.InputSystem;

// 新式(InputSystem)
if (Keyboard.current[Key.A].wasPressedThisFrame)
{
    Debug.Log("[New] A");
}

// 旧式
if (Input.GetKeyDown(KeyCode.A))
{
    Debug.Log("[Old] A");
}

キーを離した瞬間を検知する方法

using UnityEngine.InputSystem;

// 新式(InputSystem)
if (Keyboard.current[Key.A].wasReleasedThisFrame)
{
    Debug.Log("[New] A");
}

// 旧式
if (Input.GetKeyUp(KeyCode.A))
{
    Debug.Log("[Old] A");
}

キーを押し続けてるのを検知する方法

using UnityEngine.InputSystem;

// 新式(InputSystem)
if (Keyboard.current[Key.A].isPressed)
{
    Debug.Log("[New] A");
}

// 旧式
if (Input.GetKey(KeyCode.A))
{
    Debug.Log("[Old] A");
}

おわりに

最後まで見ていただきヘペトナス!

読者登録・Twitterのフォローもお願いします。