📝

[Unity][UniRx]OnDragAsObservableの頻度を制御する方法

2022/05/16に公開

やりたいこと

GameObjectをドラッグしている間、変数(hoge)が増えていくのを作りたい。

発生した問題

[SerializeField] private hogeClass _model;
var ObservableEventTrigger eventTrigger;

eventTrigger.OnDragAsObservable.Subscribe(pointerData => _model.hoge++);

これだとドラッグしてる間のフレーム(?)単位でhogeが増えた。
変数の上限は1000くらいにしたいのでこれだと困る。

解決方法

[SerializeField] private hogeClass _model;
var ObservableEventTrigger eventTrigger;

eventTrigger.OnDragAsObservable.ThrottleFirst(TimeSpan.FromSeconds(1)).Subscribe(pointerData =>  _model.hoge++);

ThrottleFirst(…)を使うことでドラッグしっぱなしでも1秒毎にhogeが増えていくようにできた。
やったぜ。(ハマり時間:3時間半)

参考

https://qiita.com/toRisouP/items/fe52e1582c14782af3ac

Discussion