UniRxのシンプルなサンプルの取扱説明書
前(TimerとInterval 一定時間後に実行)
プッシュを遅らせる
前回時間に関するObserverをやったので今回は更にもうひとつ
プッシュを一定時間遅らせてくれるDelayです。
なにか良い使い道は…とか思って加算合成器が思い当たるけど…あとは…
エフェクトの後に処理するとかだとそのエフェクトがプッシュすれば良かったりして
うーん…
今回はボタンを押すと5秒後に横に行くGameObjectです。
前準備
このような形で今回はuGUIでボタンとそれからいつものようにGameObjectを作成します。
そしてGameObjectにはDelaySampleをはりつけます。
押して5秒後に移動する
押して5秒後に移動するボタンは次のコードになります。
Buttonについては先程のSSの赤いボタンをアタッチしておいてください。
using UnityEngine;
using System.Collections;
using UniRx.Triggers;
using UniRx;
using UnityEngine.UI;
using System;
public class DelaySample : Base
{
public Button Button;
// Use this for initialization
void Start () {
gameObject.transform.position = new Vector2(0, 30f);
//一回だけ右に移動
Button.onClick.AsObservable()
.Delay(TimeSpan.FromSeconds(5))//5秒後に実行
.Subscribe(l => Move(30f, 0));
}
}
ボタンに関してはUniRxのシンプルなサンプル その5(Buttonが押されたら動くGameObjet)を参照してください。
今回の主役は
Delay(TimeSpan.FromSeconds(5))//5秒後に実行
です。
このメソッドは
IObservable.Delay(TimeSpan dueTime)
と定義されています。
値がプッシュされたらそれをdueTimeだけ遅延して後続に値をプッシュします。
ですので
ボタンが押される
Delayにプッシュされる
5秒後にDelayがさらにプッシュする
Subscribeに到達
という順序で処理が流れていきます。
実行結果
以下のように実行されます。
ボタンを押すと5秒後に赤いGameObjectが右に移動します。