G.D.M

「 Game Development Memo 」 の略称。 ゲーム開発の備忘録

 

スポンサーサイト 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

category: スポンサー広告

TB: --    CM: --

UniRxとは? 

最近Unityで使えるライブラリのUniRxに興味を持ち始めた。
今後少しずつまとめ記事を書きたい。


- UniRx -

Reactive Extensions for Unityの略称。

AssetStoreかGitHubよりダウンロード可能↓
https://www.assetstore.unity3d.com/jp/#!/content/17276
https://github.com/neuecc/UniRx


- Rxとは? -

FunctionalReactiveProgrammingをC#で実現するためのライブラリ。
これを用いるとイベントや非同期処理に対して、LINQライクな処理を適用できるようなる。
また、RxはObserverパターンを応用したものである。
.NET 3.5 SP1, SL 4以降, WP7で利用可能。

習熟コストはかなり高く、学ぶ上でC#の様々な構文やLINQなどの知識がないと辛い。
しかし、使いこなせるようになればReactive(反応的)な処理が非常にシンプルに書けるようになるため、学ぶ価値は大いにあると思う。


- 何に利用できるか? -

イベントの待ち受け … マウスクリック、ボタン入力
非同期処理 … 別スレッドを用いた通信、リソースのロード
時間計測の必要な処理 … ダブルクリック、長押し
変化する値の監視 … フラグが切り替わった時の処理、データの更新時の処理

…等々


- IObservable, IObserver, Subject -

Rxの要となる3つのクラス。
Rxにはこれら3つのクラスの具象クラスや亜種となるクラスが多数存在する。

 【IObservable

Subscribe( 購読の意 )関数のみを持ったインターフェースクラス。
Subscribe関数は引数としてIObserverを要求し、IObservableの具象クラスで
その通知先を記録する。変更の通知を行う必要がある場合、Subscribeにより登録された
すべてのIObserverに対して、特定の関数を呼び出す。
Subscribe関数の戻り値はIDisposableであり、それのDispose関数を呼び出すことにより、
通知を止めることができる。
IObservableはRxでいう、ストリーム( 時間軸上に並んだイベントのシーケンス )に相当する。

 【IObserver

OnNext、OnComplete、OnErrorの3つの関数を持つインターフェースクラス。
この3種類の関数がストリームに流れるイベント( メッセージ )の通知を行う関数である。

OnNext … 状態が変化したことを通知する
OnComplete … 状態変化の通知が完了したことを通知する
OnError … エラーが発生したことを通知する

 【Subject

IObservableとIObserverの両方を実装した、一人二役のクラス。
( 実際に2つのインターフェースを継承しているのはISubject )
このクラスはIObservable同様にSubscribe関数により、IObserverを登録できる。
そして、自身のOnNextやOnComplete関数等から、自発的に登録したIObserverに対して
通知を送ることができる。またSubjectクラスはIObservableの拡張メソッドである
AsObservable関数から、HotなObservableを作成することもできる。
( HotとColdについてはここでは略す )

この3つのクラスの実装については下記のサイトが参考になる↓
http://blog.xin9le.net/entry/2011/12/15/223350
http://blog.xin9le.net/entry/2011/12/19/025912



まだ学んでから日が浅いので、間違っている部分があれば逐次修正するつもり。
次回はUniRxで使用頻度の高い関数かまたはHot/Cold変換についてまとめようかなと思う。


- 参考URL -

やさしいFunctional reactive programming(概要編)
http://maoe.hatenadiary.jp/entry/20100109/1263059731

Rx入門
http://blog.xin9le.net/entry/rx-intro

Reactive Extensions再入門 その46「 Reactive Extensions 入門 」
http://blog.okazuki.jp/entry/20120305/1329923070

UniRxについて書いた記事をまとめてみた
http://qiita.com/toRisouP/items/48b9fa25df64d3c6a392

Rx入門
http://www.slideshare.net/xin9le/rx-intro


スポンサーサイト

category: Unity

TB: --    CM: 0

コメント

コメントの投稿

Secret

プロフィール

カレンダー

最新記事

カテゴリ

検索フォーム

ツイッター

GitHub

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。