2018-08-01から1ヶ月間の記事一覧

UniRx: Concat

Observable.Concat() は複数の IObservable<T> を順番に実行するオペレーターです。 using System; using UniRx; using UnityEngine; public class Main : MonoBehaviour { void Start() { // 1 秒ごとに通知 var a = Observable.Interval(TimeSpan.FromSeconds</t>…

UniRx: 購読をキャンセルする

IObservable<T>.Subscribe() から返却される IDisposable の Dispose() を呼び出すと購読がキャンセルされます。 using System; using UniRx; using UnityEngine; public class Main : MonoBehaviour { private IDisposable _disposable; void Start() { var s </t>…

UniRx: AddTo() 拡張メソッドのソースを読む

この記事では、AddTo() 拡張メソッドを用いると、ゲームオブジェクトの破棄タイミングで購読を破棄する仕組みを眺めていきます。 次のサンプルコードでは、Observable.Interval() で一定時間ごとにログを出力します。 また、スペースキーを押すとシーンが切…

UniRx: Observable.ReturnUnit のソースを読む

Observable.ReturnUnit のサンプルコード using System; using UniRx; using UnityEngine; public class Main : MonoBehaviour { void Start() { var s = Observable.ReturnUnit(); s.Subscribe(e => Debug.Log("e: " + e), () => Debug.Log("OnCompleted"))…

UniRx: Start

Observable.Start メソッドは、引数で指定した Func<T> 関数から生成したデータを通知します。 using System; using UniRx; using UnityEngine; public class Main : MonoBehaviour { private IObservable<DateTime> _observable; void Start() { _observable = Observabl</datetime></t>…

UniRx: Return

void Start() { var s = Observable.Return(100); s.Subscribe(e => Debug.Log(e), () => Debug.Log("OnCompleted")); } 実行結果です。 100 OnCompleted UniRx の Return の実装を読む。パフォーマンスを上げるために、通知する値の型に応じて実装をもって…

ToLookup 拡張メソッド

以前に Partition 関数 - C#練習日記 を作りましたが、 Linq には ToLookup 拡張メソッド があり、このメソッドを使うことで同様のグルーピングを行うことができます。 using System; using System.Linq; class Program { static void Main() { var xs = new…