コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】ゲームがバックグラウンドの時もキー入力を受け付けることができる「UnityRawInput」紹介

はじめに

「UnityRawInput」を Unity プロジェクトに導入することで
ゲームがバックグラウンドの時もキー入力を受け付けることができるようになります

使い方

using UnityEngine;
using UnityRawInput;

public class Example : MonoBehaviour
{
    private void OnEnable()
    {
        // 初期化
        // true を渡すとゲームがバックグラウンドの時もキー入力を受け付ける
        RawKeyInput.Start( false );

        // イベント登録
        RawKeyInput.OnKeyUp   += OnKeyUp  ;
        RawKeyInput.OnKeyDown += OnKeyDown;
    }

    private void OnDisable()
    {
        // 停止
        RawKeyInput.Stop();

        // イベント解除
        RawKeyInput.OnKeyUp   -= OnKeyUp  ;
        RawKeyInput.OnKeyDown -= OnKeyDown;
    }

    // キーが離された時に呼び出される
    private void OnKeyUp( RawKey key )
    {
        Debug.Log( "OnKeyUp: " + key );
    }

    // キーが押された時に呼び出される
    private void OnKeyDown( RawKey key )
    {
        Debug.Log( "OnKeyDown: " + key );
    }

    private void Update()
    {
        // Input クラスのように使用することも可能
        // 下記は Input.GetKey と同等
        // この書き方はゲームがバックグラウンドの時に
        // キー入力を受け付けないので注意
        if ( RawKeyInput.IsKeyDown( RawKey.Space ) )
        {
            Debug.Log( "IsKeyDown" );
        }
    }
}

上記のようなスクリプトを記述することで使用できます

参考サイト様