UniRx: 時間を(複数)指定してイベント発行

下のコードは、1 秒、3 秒、4 秒後にイベントを発行するサンプルです。

using System;
using System.Linq;
using UniRx;
using UniRx.Diagnostics;
using UnityEngine;

public class Main : MonoBehaviour
{
    void Start()
    {
        var fireTimes = new[] { 1, 3, 4 }; // 1 秒, 3 秒, 4 秒後にイベント発行
        var s = fireTimes.Select(e => Observable.Timer(TimeSpan.FromSeconds(e))).Merge();
        s.Debug().Subscribe();
    }
}

実行結果です。

[12:17:05:094] OnSubscribe
[12:17:06:302] OnNext(0)
[12:17:08:287] OnNext(0)
[12:17:09:297] OnNext(0)
[12:17:09:300] OnCompleted()

Merge オペレータ

f:id:noriok:20180929232455p:plain