この記事の使用環境: Unity 2017.3.1f1 Personal (.NET 4.6 Equivalent), Visual Studio Community 2017, Windows10 ]


通常の UnityEngine.EventSystems.EventTrigger はスクリプト内で使うのに少し面倒に感じたので、それを継承して簡素化した SimpleEventTrigger を作って利用する案です。(こんなの試したよ、という備忘録)

SimpleEventTrigger クラス

using System;
using UnityEngine.EventSystems;


/// <summary>
/// EventTriggerを単純化したもの。対象のオブジェクトにアタッチして使用する
/// </summary>

public class SimpleEventTrigger : EventTrigger
{
    public EventHandler PointerEnter, PointerExit;      // ボタン上にポインターが入ったとき/出ていったときのイベント


    public override void OnPointerEnter ( PointerEventData eventData )
        => PointerEnter ( this, EventArgs.Empty );

    public override void OnPointerExit ( PointerEventData eventData )
        => PointerExit ( this, EventArgs.Empty );
}


上記クラスのテストに使ったスクリプトはこちら ↓ 

SimpleEventTriggerTest

using UnityEngine;
using UnityEngine.UI;


public class SimpleEventTriggerTest : MonoBehaviour
{
    [SerializeField] Button testButton;     // SimpleEventTrigger がアタッチされた Button
    [SerializeField] Text textText;


    private void Awake ()
    {
        var buttonEventTrigger = testButton.GetComponent<SimpleEventTrigger>();

        buttonEventTrigger.PointerEnter += ( sender, e ) => TextChange ( "Pointer Enter" );
        buttonEventTrigger.PointerExit += ( sender, e ) => TextChange ( "Pointer Exit" );
    }


    private void TextChange ( string text ) => textText.text = text;
}


このテストでは Button オブジェクトにポインター(マウスカーソルなど)が入ったとき・出ていったときにイベント発信させていますが、SimpleEventTrigger は Button 以外のオブジェクトにアタッチして利用することもできます(通常の EventTrigger と同様)。


今回は以上です。