[ この記事の使用環境: Unity 2017.3.1f1 Personal (.NET 4.6 Equivalent), Visual Studio Community 2017, Windows10 ]
通常の UnityEngine.EventSystems.EventTrigger はスクリプト内で使うのに少し面倒に感じたので、それを継承して簡素化した SimpleEventTrigger を作って利用する案です。(こんなの試したよ、という備忘録)
上記クラスのテストに使ったスクリプトはこちら ↓
このテストでは Button オブジェクトにポインター(マウスカーソルなど)が入ったとき・出ていったときにイベント発信させていますが、SimpleEventTrigger は Button 以外のオブジェクトにアタッチして利用することもできます(通常の EventTrigger と同様)。
今回は以上です。
通常の 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 と同様)。
今回は以上です。
コメント