UnityでのEventTriggerとOnMouseEnterとの違い

2023年5月25日

EventTriggerとOnMouseEnterは、どちらもUnityでマウスイベントを処理するための方法ですが、いくつかの違いがあります。

それぞれの違い

OnMouseEnter

マウスカーソルがオブジェクトの境界内に入った時に呼び出されるイベントです。つまり、マウスカーソルがオブジェクト上にある場合にのみイベントが発生します。

MonoBehaviourクラスのメソッドであり、スクリプトのコンポーネントに直接アタッチして使用します。
オブジェクトに直接アタッチして使用し、マウスカーソルがオブジェクト上にある場合に呼び出されます

EventTrigger

マウスイベント以外の様々なイベント(タッチイベント、キーボードイベント、ポインターイベントなど)を処理することができます。

UnityEngine.EventSystems名前空間に含まれるクラスであり、オブジェクトにアタッチされるEventTriggerコンポーネントを使用してイベントを処理します。EventTriggerは、OnPointerEnterというメソッドを提供しています。このメソッドは、OnMouseEnterと同じように、マウスカーソルがオブジェクトの境界内に入った時に呼び出されます。

また、EventTriggerを使用する場合、OnPointerEnterメソッド以外にも、マウスイベントに対応するOnPointerExit、OnPointerDown、OnPointerUpなどのメソッドが用意されています。これらのメソッドを使用することで、オブジェクトのクリックやドラッグなどの動作を処理することができます。

オブジェクトにEventTriggerコンポーネントをアタッチして使用し、様々なイベント(マウスイベントを含む)を処理することができます

Unity pointerdown のcancelInvokeとは

PointerDownイベントは、ポインター(マウス、タッチパネルなど)がオブジェクト上にある状態で発生します。このイベントが発生した時、ポインターが離れた場合にもイベントが継続して発生するため、UI要素のドラッグやスワイプの処理に使用されます。

CancelInvokeは、Invokeメソッドで登録した遅延実行中のメソッドの実行をキャンセルするためのメソッドです。このメソッドは、指定されたメソッドが実行される前に呼び出すことができます。

PointerDownイベントとCancelInvokeは、直接関係はありません。ただし、PointerDownイベントが発生した後に、Invokeメソッドで登録した遅延実行中のメソッドをキャンセルすることができます。例えば、PointerDownイベントが発生した時にInvokeメソッドで登録したメソッドがある場合、ポインターが離れた時にもメソッドが実行されてしまう可能性があるため、CancelInvokeを使用してメソッドの実行をキャンセルすることができます。

以下は、PointerDownイベントが発生した時に、遅延実行中のメソッドをキャンセルする例です。

using UnityEngine;
using UnityEngine.EventSystems;

public class CancelInvokeOnPointerDown : MonoBehaviour, IPointerDownHandler
{
    public void OnPointerDown(PointerEventData eventData)
    {
        // Invokeメソッドで登録したメソッドをキャンセルする
        CancelInvoke("DelayedMethod");
    }

    private void DelayedMethod()
    {
        // 遅延実行されるメソッドの内容
    }
}

C#,Unity,イベント

Posted by hidepon