はじめに
今回はUniRxでEventTriggerによるタッチを制御する方法についての記事になります!
よくユーザーからの入力としてuGUI
のbutton
を利用したサンプルがありますよね。
ただ私はよくEventTrigger
のPointerDown
を使った方法を使います。
以前普通のuGUI
のOnClick
を用いていたら、感度が悪いとレビューで言われてしまいました。
それからはEventTrigger
を愛用しています。
またあまりEventTrigger
のUniRx
に関するサンプルを見かけなかったので、書き残しておきたいと思います。
やり方
まずはこちらの記述を忘れずにします。
using UniRx; using UniRx.Triggers;
最初にEventTrigger
と言いましたが、UniRx
で使うのは厳密にはObservableEventTrigger
です。
このクラスにはIObservable
に変換してくれるメソッドがあるからというわけですね。
実際に使ってみると、
using UniRx; using UniRx.Triggers; using UnityEngine; public class EventTriggerTest : MonoBehaviour { private void Start() { var eventTrigger = gameObject.AddComponent<ObservableEventTrigger>(); // PointerDown eventTrigger.OnPointerDownAsObservable() .Subscribe(pointerEventData => Debug.Log(pointerEventData.position)); } }
これでこのスクリプトがアタッチされたゲームオブジェクトをクリックしてみると、タッチした座標が出力されているはずです。
さいごに
最近知ったのですがuGUI
のbutton
にもPointerDown
があるみたいです。
var button = GetComponent<Button>(); button.OnPointerDownAsObservable() .Subscribe(pointerEventData => Debug.Log(pointerEventData.position));
なのでどちらを使うべきかは好み次第かもしれませんね。