ボタンを押した時だけ回数を1からカウントし、しばらく押さないと非表示になってリセットされる、コンボ数表示のようなものを UniRx のワンライナーで作ってみました。
各段にコメントを入れてあるので、詳細はそちらを参照してください。
public class RxCounter : MonoBehaviour
{
[SerializeField]
private Button button = default;
[SerializeField]
private TMP_Text text = default;
private void Start()
{
button.onClick.AsObservable()
// ボタンを押すたびに加算する(リセットは後述)
.Scan(0, (acc, _) => acc + 1)
// 入力があったらテキストをアクティブにする
// ※ここは複数回呼ばれても問題ない前提で、ボタンを押すたびに呼ばれます
.Do(_ => text.gameObject.SetActive(true))
// 加算後の値でテキストを更新する
.Do(count => text.SetText("{0}", count))
// 一定時間(ここでは2秒)内に次の入力があればせき止める
// なければ、通す
.Throttle(TimeSpan.FromSeconds(2))
// 入力が無くなった段階で、カウントをリセットするため、完了させる
.FirstOrDefault()
// アプリ終了まで繰り返すため、もう一度Subscribeする
.RepeatUntilDestroy(this)
// 一定時間入力がないときにこの下が呼ばれるので、テキストを非アクティブにする
// ※Subscribe側に書いても問題ないです
.Do(_ => text.gameObject.SetActive(false))
.Subscribe();
}
}
何か権利が発生するほどのものでもないと思いますが、そうであった場合には Unlicense license としておきますので、ご自由にお使いください。