スクリプトをアタッチしたオブジェクトに対し、OnMouseEnterではマウスが乗った時、OnMouseExitではマウスがオブジェクトから離れた時、OnMouseOverでは乗っている間ずっとイベントを起こすことができます。
前準備
適当なオブジェクトを用意し、
コライダーを置いて、スクリプトをアタッチします。
OnMouseEnter
マウスが乗った時イベント実行(メソッド)
OnMouseEnter
OnMouseEnter
//Unity C#
void OnMouseEnter()
{
this.GetComponent<SpriteRenderer>().color += new Color(-0.1f, -0.1f, -0.1f, 0);
}
実行結果です。
メソッド内の命令がマウスがオブジェクトに乗るたびに一度実行されるのと、マウスがオブジェクトを離れても元に戻ったりしないことが確認できます。
メソッド内の命令がマウスがオブジェクトに乗るたびに一度実行されるのと、マウスがオブジェクトを離れても元に戻ったりしないことが確認できます。
OnMouseExit
マウスが離れた時イベント実行(メソッド)
OnMouseExit
OnMouseExit
//Unity C#
void OnMouseExit()
{
this.GetComponent<SpriteRenderer>().color += new Color(0.1f, 0.1f, 0.1f, 0);
}
対してOnMouseExitの場合、マウスがオブジェクトから離れた時に実行されるイベントなので、OnMouseEnterとは真逆の動きということになります。
実行結果です。OnMouseEnterで暗くなったオブジェクトが、OnMouseExitで元に戻されています。
OnMouseDrag×OnMouseExit
//Unity C#
void OnMouseDrag()
{
this.GetComponent<SpriteRenderer>().color += new Color(-0.01f, -0.01f, -0.01f, 0);
}
void OnMouseExit()
{
this.GetComponent().color = new Color(1f, 1f, 1f, 1f);
}
ここではOnMouseDragを使い、オブジェクト内でドラッグしているうちは色を変え、外に出たら元に戻すということをしようとしていますが、
OnMouseDragはドラッグしていればオブジェクトから離れても実行され続けるため、外に出て元に戻った後また色が変わってしまうようです。
//Unity C#
bool boxFlag = true;
void OnMouseEnter()
{
boxFlag = true;
}
void OnMouseDrag()
{
if (boxFlag)
{
this.GetComponent().color += new Color(-0.01f, -0.01f, -0.01f, 0);
}
}
void OnMouseExit()
{
boxFlag = false;
this.GetComponent().color = new Color(1f, 1f, 1f, 1f);
}
フラグを別に用意し、フラグが有効な時だけドラッグ時のイベントが起こるようにしてやれば、
目的の状態が達成できます。
OnMouseOver
マウスが乗っている時イベント実行(メソッド)
OnMouseOver
OnMouseOver
//Unity C#
void OnMouseOver()
{
this.GetComponent<SpriteRenderer>().color += new Color(-0.01f, -0.01f, -0.01f, 0);
}
最後にOnMouseOverですが、これは単純にオブジェクトにカーソルが乗っている間だけ実行されます。
実行結果です。OnMouseEnterとちがい継続的に実行されるので、マウスが乗ってる間は段々暗くしたい、といった場合に使えます。
やりたいことから逆引きするUNITYの使い方まとめ
Unityをやりたいことから学習していけるよう、機能・用途別にまとめたページです。C#の命令別の逆引きは現時点で作っていません。2019の時期に書き始めているので、それより前のバージョンについては言及しません。
コメント