UIボタンがキーボードまたはコントローラーからトリガーされたかを検出するためには、以下の手順を実行します。
-
イベントシステムの設定: 最初に、キーボードおよびコントローラーの入力を検出するためにUnityのイベントシステムを設定する必要があります。プロジェクトのヒエラルキービューで、「EventSystem」ゲームオブジェクトを作成し、必要に応じて「Standalone Input Module」コンポーネントを追加します。
-
ボタンの設定: UIボタンを作成し、ボタンが押されたときに実行する関数を設定します。ボタンを選択し、インスペクタービューで「On Click ()」イベントを見つけます。イベントリストに新しい要素を追加し、任意のオブジェクトとメソッドを関連付けます。
-
入力の検出: ボタンがトリガーされた際に、入力の種類を検出するスクリプトを作成します。例えば、以下のようなスクリプトを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
プロパティをチェックして、キーボードかコントローラーからのトリガーかを検出しています。
- ボタンにスクリプトをアタッチ: UIボタンに作成したスクリプトをアタッチします。ボタンを選択し、インスペクタービューで「Add Component」ボタンをクリックし、スクリプトを検索してアタッチします。
以上の手順に従うことで、UnityでUIボタンがキーボードまたはコントローラーによってトリガーされたかを検出することができます。必要に応じて、キーボードまたはコントローラーによるトリガーに応じた処理を追加してください。
この方法を使用すると、プレイヤーがどのデバイスを使用しているかに関係なく、正確に入力を検出できます。