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);