16
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

[Unity] UniRXでタッチイベント周りの処理

タッチ系イベント

ObservableEventTriggerAddComponentして、そこからObservableを生やす。

var eventTrigger = this.gameObject.AddComponent<ObservableEventTrigger>();
// PointerDown
eventTrigger.OnPointerDownAsObservable()
            .Subscribe(pointerEventData => Debug.Log(pointerEventData.position));
// Drag
eventTrigger.OnDragAsObservable()
            .Subscribe(pointerEventData => Debug.Log(pointerEventData.position));

using UniRx.Triggers; を忘れずに

UnityのPointerEventDataを受け取れるので、そこから位置とか色々取得できる。

EventTriggerは個別のやつが色々ある。(ObservablePointerDownTriggerとか)
https://github.com/neuecc/UniRx/wiki#unirxtriggers

ObservableEventTriggerはこれらのいくつかをまとめて使えるようにしてくれているっぽいので、
主にタッチ系のイベントはObservableEventTriggerでも良さそう。
https://github.com/neuecc/UniRx/wiki/UniRx.Triggers#observableeventtrigger

ただし、余計なTriggerが付いて困るような場合は、個別のTriggerを使うと良い。

例えば Scroll View の中のComponentにクリックイベントを付けたい場合、
ObservableEventTriggerを付けてしまうとドラッグイベントまでフックしてしまい、
スクロールができなくなってしまう。
この場合はObservablePointerClickTriggerを使うと良い。

Update系イベント

Update系のObservableMonoBehaviorから直接呼び出せる。

this.UpdateAsObservable()
    .Subscribe(_ => Debug.Log(Time.realtimeSinceStartup));

WWW

WWWを使ったダウンロードは、staticメソッドの ObservableWWW.Get を使う
https://github.com/neuecc/UniRx#network-operations

ObservableWWW.Get("http://google.com")
             .Subscribe(
                 downloadText => Debug.Log(downloadText),
                 exception => Debug.Log(exception));

並列ダウンロードもできるらしい。便利。

ドキュメント充実してて助かる
https://github.com/neuecc/UniRx

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
16
Help us understand the problem. What are the problem?