サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
中東情勢
unity-study.hatenablog.com
断続的に値が流れてくるストリームがあり、一定時間以内に値が来たら処理するが、一定時間以上値が流れて来なかったら終了する、という処理をしたいと思った。 例えばスコアを獲得する毎に値が流れてくるストリームがあるとして、これ自体は明確な終了がない。 しかし発火したタイミングで画面に表示を出したいが、表示するのは直近の1つだけにしたい。 更に表示から一定時間経過したら非表示にしたい。 というようなことをやる場合に、まぁ無理にストリームでやらなくても処理はできるのだが、スマートに書けないものか、と考えてみた。 で、こうなった。 例として、ボタン押下毎に発火するが、一定時間以上発火がなければ終了とするストリーム。 var tapStream = this.UpdateAsObservable().Where(_ => Input.GetMouseButtonDown(0)); tapStream .S
Coroutine使う場合は yield return new WaitForSeconds(n); とするような処理を、UniRx使う場合はこんな感じになる。 observable.SkipUntil(Observable.Timer(TimeSpan.FromSeconds(n)) よく使いそうなパターンは、ひと通り書いてみて覚えるのが手っ取り早いんじゃないかと思った。
このページを最初にブックマークしてみませんか?
『unity-study.hatenablog.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く