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です。