#UniRX FRPのUnity実装
Haddock のようなものはないのでコードを直接読むのがいい
##Example
using System;
using UniRx;
using UnityEngine;
public class Intro : MonoBehaviour
{
void Start()
{
// 左クリックのストリーム
var clickStream = Observable.EveryUpdate()
.Where(_ => Input.GetMouseButtonDown(0));
// Buffer:250ミリ秒以内に連続してクリックされたものをまとめる
clickStream.Buffer(clickStream.Throttle(TimeSpan.FromMilliseconds(250)))
.Select(xs => xs.Count) // 250ミリ秒以内検出したクリック数
.Where(x => x >= 2) // 2個以上のみにフィルタ
.Subscribe(_ => Debug.Log("ダブルクリックされた!")); // foreachみたいな
}
}
このスクリプト(Intro.cs)をMainCameraでもなんでも適当な何かに貼り付けてもらえれば、画面のどこでもダブルクリックされればログに流れます。
出典: A Beginners Guide to Reactive Extensions with UniRx
##Observable ###モナド
Return |
return in Haskell |
SelectMany |
flatMap in Haskell |
###リストっぽいメソッド
Where |
filter in Haskell |
Select |
map in Haskell |
Concat |
concat in Haskell |
First |
head in Haskell |
Take |
take in Haskell |
Skip |
drop in Haskell |
TakeWhile |
takeWhile in Haskell |
SkilWhile |
dropWhile in Haskell |
Zip |
zip in Haskell |
###その他のメソッド
TakeUntil |
指定したストリームにメッセージが来るまで〜 |
SkilUntil |
指定したストリームにメッセージが来てから〜 |
Repeat |
StreamがOnCompleted で終了した時にもう一度Subscribe を行う |
Timer/TimerFrame |
一定期間後に実行 |
Interval/IntervalFrame |
一定期間ごとに実行 |
Delay/DelayFrame |
一定期間メッセージの伝達を遅延させる |
Throttle/ThrottleFrame |
落ち着いた時に最後のメッセージを流す |
DistinctUntilChanged |
メッセージが変化した時のみ通知する |
出典: 未来のプログラミング技術をUnityで -UniRx-
##uGUI
##WWW
ObservableWWW.Get("https://example.com/")
##Coroutine
##LINQ