Mouse入力(および、タッチセンサー入力)を受け取るには、次の3つの方法がある。
1)Event
キー入力とMouse操作が発生した時に発信されるEventを受け取る。
ただし、Eventは、OnGUIの中のみで受け取れる(ようだ)
using UnityEngine; using System.Collections; public class RotateObject : MonoBehaviour { void OnGUI(){ Event e = Event.current; if(e.button == 0 && e.isMouse){ Debug.Log (e.delta); } } }
e.buttonは、マウスボタンの種類。
e.button 0:左ボタン、1:右ボタン、2:中ボタン
e.isMouse == true は、マウスイベントであることを示す。
2)OnMouse
MonoBehaviourのメソッドとして用意されている、Mouse関連の関数を使う方法
Scriptのアタッチ先は、GUIElemmentかColliderを持つオブジェクトのみで、オブジェクトとマウスとの関係が重要
OnMouseEnter | オブジェクト上に入った時に一度だけ呼ばれる。ボタンの状態は無関係 |
OnMouseExit | オブジェクトから出た時に一度だけ呼ばれる。ボタンの状態は無関係 |
OnMouseDown | オブジェクト上で左ボタンを押した。オブジェクト外で左ボタンを押してからオブジェクト内に入っても呼ばれない |
OnMouseDrag | マウス左ボタンを押したまま動かした。押したままオブジェクト外にでても有効 |
OnMouseOver | オブジェクト上に入っている状態。OnMouseEnterと違って何度も呼ばれる |
OnMouseUp | オブジェクト上で左ボタンをアップ。オブジェクト外でアップしても呼ばれる。 |
OnMouseUpAsButton | オブジェクト上で左ボタンをアップ。オブジェクト外でアップした場合は呼ばれない。 |
3)Input
アタッチされたオブジェクトと関係なくMouseの動作を取得する。通常は、Update()、FixedUpdate()の中で使用する。
GetMouseButton | 左ボタンをおした状態。毎回呼ばれる。 |
GetMouseButtonDown | 左ボタンをおした動作。押した際に一度だけ呼ばれる |
GetMouseButtonUp | 左ボタンを話した動作。一度だけ呼ばれる |
*引数はすべて共通で、0:左ボタン、1:右ボタン、2:中ボタン