LoginSignup
8
4

More than 5 years have passed since last update.

UniRxのシンプルなサンプル その10(プッシュを遅らせる Delay)

Last updated at Posted at 2015-05-11

UniRxのシンプルなサンプルの取扱説明書
前(TimerとInterval 一定時間後に実行)

プッシュを遅らせる

前回時間に関するObserverをやったので今回は更にもうひとつ
プッシュを一定時間遅らせてくれるDelayです。

なにか良い使い道は…とか思って加算合成器が思い当たるけど…あとは…
エフェクトの後に処理するとかだとそのエフェクトがプッシュすれば良かったりして
うーん…

今回はボタンを押すと5秒後に横に行くGameObjectです。

前準備

このような形で今回はuGUIでボタンとそれからいつものようにGameObjectを作成します。
そしてGameObjectにはDelaySampleをはりつけます。

スクリーンショット 2015-05-11 22.34.05.png

押して5秒後に移動する

押して5秒後に移動するボタンは次のコードになります。

Buttonについては先程のSSの赤いボタンをアタッチしておいてください。

DelaySample
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が右に移動します。

スクリーンショット 2015-05-11 22.41.19.png

8
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
4