ボクステ公式ブログ

2026年
2025年
2024年
カテゴリ
3D

Ad SHOOt(アドシュー)通常バナー

Unity6.2でマウスの左クリックと右クリックを判定する方法
Unity6.2(Ver.6000.2.7f2)でImageをマウスでクリックした際、それが左クリックだったのか、右クリックだったのか判断する方法を紹介します。

Unity6では、case -1:などボタン割当による判別ができません。新しいInput Systemでは、どのボタンをクリックしても全て-2になるという報告例があります。
そのため、新しいInput Systemに対応した判別法を述べます。

前提

  1. シーン内のどこかに「EventSystem」がある。
     存在しない場合は、Hierarchy>右クリック>UI>EventSystemで作成してください。

  2. UI用Canvas>Image要素を持ったオブジェクトがある。
     存在しない場合は、Hierarchy>右クリック>UI>CanvasでUICanvasを作成し、その子要素としてImageを作成してください。
Hierarchy
YourProjectScene
 |_Canvas
 | |_Image
 |_EventSystem

※EventSystemは、HierarchyのScene直下にあるとは限りません。オブジェクトやPlayerInputの中に生成されている場合もあります。その場合でも役割を果たすため、新規に追加しないでください。

スクリプトコード

クリックの左右を判定するために以下のスクリプトを作成します。

<新規スクリプトの作成>
Assets内にScripts等のフォルダがあればその中で右クリック>Create>MonoBehabior Scriptを左クリックし、新しくできたファイルにお好きな名前(例)「ClickDetection」を入力します。

なお、後からファイル名を変更した場合は、ファイル内の「public class 〇〇〇〇〇」部分も同じ名前に変更してください。両者が異なるとエラーとなります。

<コードの中身>
ClickDetection.cs
using UnityEngine;
using UnityEngine.EventSystems;//追加

public class ClickDetection :MonoBehaviour, IPointerClickHandler//追加
{
 public void OnPointerClick(PointerEventData pointerEventData)
 {
  switch(pointerEventData.button)
  {
   case PointerEventData.InputButton.Left:
    //左クリックした時の処理
    Debug.Log("Left Click");
    break;
   case PointerEventData.InputButton.Right:
    //右クリックした時の処理
    Debug.Log("Right Click");
    break;
   case PointerEventData.InputButton.Middle:
    //ホイールクリックした時の処理
    Debug.Log("Middle Click");
     break;
  }
 }
}

上記のスクリプトを、先ほど作成したImage要素を持つオブジェクトへドラッグ&ドロップしてください。

シーンビュー上部の▷をクリックしてゲームを実行(Play)します。
Image要素をクリックすると、UnityのConsoleに「Left Click」や「Right Click」と表示されるはずです。

クリックボタン左右中識別テスト
クリックボタン判定中のコンソール

コードは自由にコピーペースト、改造してお使いください。

【クリックの左右を判定すると何ができるのか?】

例えば、ある一つの敵対オブジェクトに対して左クリックで攻撃、右クリックで防御するなど、複数の機能を割り当てることができます。

当社で開発中のシミュレーションゲームでは、アイテム欄整理時にアイコンを左クリックした時は1個移動、右クリックした時は10個移動するようにしています。

カテゴリ  ゲーム開発