Posted at

【Unity】バックグラウンド動作時のキー入力取得

More than 1 year has passed since last update.

Unityがバックグラウンドで動いているとき,Inputクラスではキー入力を取得できません。

そこで,以下のリンクにあるパッケージを利用します。

英語ですが,使い方もほぼ書いてあります。

https://github.com/Elringus/UnityRawInput

サンプルソース

using UnityEngine;

using UnityRawInput;

public class RawKeyInputTest : MonoBehaviour
{
public bool WorkInBackground;
public bool InterceptMessages;

private void OnEnable ()
{
RawKeyInput.Start(WorkInBackground);
RawKeyInput.OnKeyUp += LogKeyUp;
RawKeyInput.OnKeyDown += LogKeyDown;

}

private void OnDisable ()
{
RawKeyInput.Stop();
RawKeyInput.OnKeyUp -= LogKeyUp;
RawKeyInput.OnKeyDown -= LogKeyDown;
}

private void OnValidate ()
{
RawKeyInput.InterceptMessages = InterceptMessages;
}

private void LogKeyUp (RawKey key)
{
Debug.Log("Key Up: " + key);
}

private void LogKeyDown (RawKey key)
{
Debug.Log("Key Down: " + key);

//Aが押されたら
if (RawKeyInput.IsKeyDown(RawKey.A)) {
print ("test");
}
}

}

よく使うと思うのはこの部分


//Aが押されたら
if (RawKeyInput.IsKeyDown(RawKey.A)) {
print ("test");
}

ここで特定のキーの入力を取得できます。

RawKey.取得したいキー のように書き,あとはキー入力で行いたい処理を書けばOKです。