質問: ### 前提・実現したいこと 1. [とあるボタンを押下し、手放す] -> タイマーが動作する 2. [タイマーが動作中の間に同ボタンを再び押下、手放す] -> カウントアップ処理が走るおよび、動作中のタイマーがリセットされる 3. [タイマーが時間切れ] -> 1.を待つ状態に戻る スマホのフリックキーボードでボタンを短時間に何度か押すと「あ」->「い」->「う」...ってなる挙動のイメージです。 ### 試したこと Unirx.Triggers.OnPointerUpAsObservable()を使って単純にイベントを通知するのはできるのですが、 複数の条件が組み合わさる場合に、 * どのような組み合わせ方をすればいいのか * そもそもUniRxのオペレータで完結できるのか という部分への理解が追い付いておらず、手が止まってしまいました... ### 補足情報(FW/ツールのバージョンなど) * Unity 2018.1.1f1 * UniRx 6.0.0 を使用しています。 よろしくお願いいたします。
回答: こんにちは。 UniRxではなく普通のRxでの知識ですが、回答してみます。 質問からこれで本当は何を実現したいのかが読み取れないですが、たぶん`Throttle`を使えばいい気がします。 ``` var counter = 0; var time = TimeSpan.FromSeconds(1); // 猶予時間はとりあえず1秒にした とあるButtonを押下したときのObservable .Do(_ => counter++) // カウントアップ .Throttle(time) // 1秒以上空いたら .Do(_ => counter = 0) // カウントリセット .Subscribe(); ```