Edited at

[Unity]左クリック、右クリックを判定する

メモです。


PointerEventDataのpointerIdを使う方法

マジックナンバーで読みにくいし、間違えそう


sample.cs

public void OnPointerDown(PointerEventData pointerEventData)

{
switch(pointerEventData.pointerId)
{
case -1:
Debug.Log("Left");
break;
case -2:
Debug.Log("Right");
break;
case -3:
Debug.Log("Middle");
break;
}
}


PointerEventDataのbuttonを使う方法

enum型もあるので、こっちのが良さそう

public void OnPointerDown(PointerEventData pointerEventData)

{
switch(pointerEventData.button)
{
case PointerEventData.InputButton.Left:
Debug.Log("Left");
break;
case PointerEventData.InputButton.Right:
Debug.Log("Right");
break;
case PointerEventData.InputButton.Middle:
Debug.Log("Middle");
break;
}
}


UniRxで左クリックされた場合を書いてみる

void Start()

{
GetComponent<ObservablePointerDownTrigger>()
.OnPointerDownAsObservable()
.Where(pointerEventData => pointerEventData.button == PointerEventData.InputButton.Left)
.Subscribe(pointerEventData =>
{
Debug.Log(pointerEventData.button.ToString()); //Left
Debug.Log(pointerEventData.pointerId.ToString()); //-1
}).AddTo(gameObject);
}