[UniRx]型の異なるReactivePropertyを合成する

以前、MVRPパターンをやってみた、という記事を書きました。

UnityでUniRxとZenjectを使ってMVRPパターンを実装した時のメモです。 この話題はたくさん先駆者がいらっしゃってわざわざ書...

HPを管理するReavtivePropertyを作って、その値の変化があったときにViewを更新する、という動きでした。
これはこれでいいのですが、例えばHPの値と、キャラクターの状態異常の2つの値の組み合わせを使ってViewを更新したい、という場合について考えてみます。

2つのReactiveProperty(IObservale)を合成するには、Operatorを使用します。今回は、どちらかの値が変わった時に通知がされる、CombineLatestを使ってみます。

CombineLatestは、拡張メソッドとして使う形と、Observableのstaticメソッドとして使う形がありますが、動作に違いはありません。

下記のサンプルでは、Enumを使う独自のReactivePropertyを2つ用意して、どちらの値が変わった時に通知が行われるようにしています。拡張メソッド方式とクラスメソッド方式の両方を記載していますが、ポイントは2つの引数を受け取るselector(Func)への値の渡し方ではないでしょうか。

2つの引数を取るFuncのため、(x1,x2)の形で引数を指定します。

この書き方は、UniRx本を参考にさせてもらいました。非常に役に立つ本です!

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク