UniRx実装する時に使えるTips集
自分がUniRxで実装する時に調べたことや、有用な記事を項目別に分けてまとめていきます。 それぞれの記事について自分の読んだ感想を書いているので、参考になると幸いです。 随時更新していく予定です。
UniRx入門
まずはそれぞれの機能について知る必要がある。以下の記事を読めば、大体のUniRxの 機能を知ることができる。(理解できるとは言ってない)
UniRx入門 その1 - Qiita
UniRxの中核機能であるSubjectを主に説明している。Subject周りについてしっかり書かれていて 良いが、今まで他の言語を含めRxで書いたことのない人にとっては少々読むのは辛いかもしれない。
UniRx入門 その2 - メッセージの種類/ストリームの寿命 - Qiita
3つのメッセージのOnNext, OnError, OnCompleted
・OnNext:
・OnError:
・OnCompleted:
ストリームを正しく破棄しなければ、メモリリークを起こして、パフォーマンスを低下させる
・AddTo(gameObject):を書くことで、指定のGameObjectが破棄された時に自動的にDisposeを呼び出せば良い
UniRx入門 その3 -ストリームソースの作り方 - Qiita
ストリームソースの作り方
Subjectシリーズ
ReactivePropertyシリーズ
・ReactivePropertyはインスペクタービューに表示することが可能。MV(R)Pで真価を発揮するらしい。
ReactiveCollection
・状態の変化を通知する機能が内蔵されたList
ReactiveDictionary<T1, T2>
・ReactiveCollectionとほぼ同じ挙動
ファクトリメソッドシリーズ
・Subjectだけでは表現できないようなストリームを簡単に作るできる場合があるらしい。
Observable.Create
Observable.Start
非同期で何か処理を走らせて、結果が出たら通知して欲しい時に利用することができる。Observable.Timer / TimerFrame
UniRx.Triggersシリーズ
UniRxで一番重要かつ便利とのこと UnityのコールバックイベントをUniRxのIObservableに変換してくれる。
こルーチンから変換する
オペレーションチェーンで複雑なストリームを作るより、コルーチンと併用して手続き的に書いた方が 良い場合があるので、覚えておいて損はない。
uGUIイベントから変換する
実装するときの注意すること Tips
ReactivePorpertyについて
ReactivePropertyはSubjectの機能を使いやすくしたものと思っています。
UniRxを使ってゲームの進行を管理する手法 – ニムサイト
UniRxでMVP設計する
MVPで設計する時に参考になる書き方を紹介してくれている記事。
Web出身のUnityエンジニアによる大規模ゲームの基盤設計
PresenterとView間のやりとり
Presenter -> View
・View内では、Viewに関するプロパティを直接参照できないように、privateで宣言する。
・privateで宣言したものをpublicプロパティでgetterとして返す。
・ActionをPublicで宣言して、Presenter側でそれをPresenter側で処理内容を記述する。
PresenterとModel間のやりとり
Presenter -> Model
・Model側にPublic関数を用意してPresenterでそれを呼び出すようにする。
Model -> Presenter
・Model側にIReadOnlyReactivePropertyを公開プロパティとして用意してそれをPresenterで呼び出すようにする。