Unityマウスイベントまとめ

投稿者: | 2017/04/09

Unityでマウスイベントを扱おうとすると反応しないことがあったので調べました。
結論としては、3Dオブジェクト、2Dスプライト、UI Image, UI Buttonでそれぞれやり方が違いました。

3Dオブジェクトの場合

スクリプトに下記を書いてあげれば勝手に反応する

void OnMouseDown()
{
    Debug.Log("OnMouseDown");
}
void OnMouseDrag()
{
    Debug.Log("OnMouseDrag");
}
void OnMouseUp()
{
    Debug.Log("OnMouseUp");
}

2Dスプライトの場合

Collider2Dコンポーネントを追加して、スクリプトに下記を書いてあげれば勝手に反応する
(ちなみにUI ImageにColliderつけても反応しなかった。)

void OnMouseDown()
{
    Debug.Log("OnMouseDown");
}
void OnMouseDrag()
{
    Debug.Log("OnMouseDrag");
}
void OnMouseUp()
{
    Debug.Log("OnMouseUp");
}

UI Imageの場合

Event Triggerコンポーネントを追加すると各種イベントを追加できる。

public void OnPointEnter()
{
    Debug.Log("OnPointEnter called.");
}
public void OnPointExit()
{
    Debug.Log("OnPointExit called.");
}
public void OnPointDown(BaseEventData data)
{
    Debug.Log("OnPointDown called.");
}
public void OnPointUp()
{
    Debug.Log("OnPointUp called.");
}
public void OnPointClick()
{
    Debug.Log("OnPointClick called.");
}
public void OnDrag()
{
    Debug.Log("OnDrag called.");
}
public void OnBeginDrag()
{
    Debug.Log("OnBeginDrag called.");
}
public void OnEndDrag()
{
    Debug.Log("OnEndDrag called.");
}

UI Buttonの場合

デフォルトのButtonコンポーネントの項目に「On Click」というのがあるのでそこに関数を追加する

 
以上、全然統一感がないのでなんとかしてほしい。。


コメントを残す

メールアドレスが公開されることはありません。