UniRxのObservable.DelayとObservable.Timerについての記事です。
Observable.Delay
Observable.Delay()はストリームから値が流れてくるタイミングを遅らせます。
var observable = Observable
.Start(() => "OnNext.")
.DoOnSubscribe(() => Debug.Log("OnSuscribe."));
// すぐOnSuscribe.が表示され、1秒後にOnNext.が表示される
Observable
.Delay(observable, System.TimeSpan.FromSeconds(1.0f))
.Subscribe(Debug.Log);
あくまで流れてくるタイミングを変えるだけなので、購読自体はDelay().Subscribe()と同時に呼ばれます。
購読自体を遅らせるにはTimer
購読自体を遅らせるにはObservable.Timer()のあとにストリームをつなげるのがよさそうです。
var observable = Observable
.Start(() => "OnNext.")
.DoOnSubscribe(() => Debug.Log("OnSuscribe."));
// 1秒後にOnSuscribe.とOnNext.が表示される
Observable
.Timer(System.TimeSpan.FromSeconds(1.0f))
.SelectMany(observable)
.Subscribe(Debug.Log);
追記_DelaySubscription
@toRisouPさんからDelaySubscriptionというオペレータを教えていただきました!(ありがとうございます..!)
これを使って下記のように書くと購読を遅らせられます。
// 1秒後にOnSuscribe.とOnNext.が表示される var observable = Observable .Start(() => "OnNext.") .DoOnSubscribe(() => Debug.Log("OnSuscribe.")) .DelaySubscription(System.TimeSpan.FromSeconds(1.0f)) .Subscribe(Debug.Log);