1. Qiita
  2. 投稿
  3. Unity

UniRx: ReactivePropertyが変更を検知できないクラスをそれでもそのまま使う方法

  • 2
    いいね
  • 0
    コメント

UniRxのReactivePropertyが変更を検知できないクラスをなんとかそのまま使えないかと調べてみたところ、手動でイベントを発行する方法がありました。

本当はReactivePropertyでこう書きたかった

が、変更を検知できないので無理。

public ReactiveProperty<Unit> Hero { get; private set; }

Subjectを使って書き換える

Subjectを使って手動で発行できました。
こんな感じで宣言しておいて

public Subject<Unit> HeroStream = new Subject<Unit>();
public Unit Hero{ get; private set; }

自分でイベントを発行します。

public void NewHero() {
    var Hero = new Hero();
    HeroStream.OnNext(Hero);
}

受信側

イベントを受け取る側の書き方はReactivePropertyのときと同じです。

Mediator.HeroStream
        .Subscribe(hero=> View.Reflesh(hero));