UnityでUIボタンがキーボードまたはコントローラーによってトリガーされたかを検出する方法


UIボタンがキーボードまたはコントローラーからトリガーされたかを検出するためには、以下の手順を実行します。

  1. イベントシステムの設定: 最初に、キーボードおよびコントローラーの入力を検出するためにUnityのイベントシステムを設定する必要があります。プロジェクトのヒエラルキービューで、「EventSystem」ゲームオブジェクトを作成し、必要に応じて「Standalone Input Module」コンポーネントを追加します。

  2. ボタンの設定: UIボタンを作成し、ボタンが押されたときに実行する関数を設定します。ボタンを選択し、インスペクタービューで「On Click ()」イベントを見つけます。イベントリストに新しい要素を追加し、任意のオブジェクトとメソッドを関連付けます。

  3. 入力の検出: ボタンがトリガーされた際に、入力の種類を検出するスクリプトを作成します。例えば、以下のようなスクリプトをUIボタンにアタッチすることができます。

using UnityEngine;
using UnityEngine.EventSystems;
public class ButtonInputDetector : MonoBehaviour, IPointerClickHandler
{
    public void OnPointerClick(PointerEventData eventData)
    {
        if (eventData.used) return;
        if (eventData.pointerId == -1)
        {
            Debug.Log("キーボードによってボタンがトリガーされました");
            // キーボードによる処理を実行
        }
        else
        {
            Debug.Log("コントローラーによってボタンがトリガーされました");
            // コントローラーによる処理を実行
        }
        eventData.Use();
    }
}

このスクリプトでは、OnPointerClickメソッドを実装し、イベントデータのpointerIdプロパティをチェックして、キーボードかコントローラーからのトリガーかを検出しています。

  1. ボタンにスクリプトをアタッチ: UIボタンに作成したスクリプトをアタッチします。ボタンを選択し、インスペクタービューで「Add Component」ボタンをクリックし、スクリプトを検索してアタッチします。

以上の手順に従うことで、UnityでUIボタンがキーボードまたはコントローラーによってトリガーされたかを検出することができます。必要に応じて、キーボードまたはコントローラーによるトリガーに応じた処理を追加してください。

この方法を使用すると、プレイヤーがどのデバイスを使用しているかに関係なく、正確に入力を検出できます。