LoginSignup
1
0

More than 1 year has passed since last update.

UniRx  subjectの使い方

Last updated at Posted at 2022-07-21

イベント駆動の動かし方を教わったので忘れないようにメモ

sample.cs
    Subject<Unit> subject = new Subject<Unit>();

    buttons[index]
    .OnClickAsObservable()
    .Subscribe(_ => subject.OnNext(Unit.Default))
    .AddTo(this);
Subject<Unit> subject = new Subject<Unit>();

subjectを定義するときに使用されている<Unit>は型であり、クリックされたかどうか判定するだけのときに用いられる。
押しているときにスピードが上がるなどの機能をつける際には<int>に変更したり複雑な動作が増える。

その後の動作は、
buttons[index]がクリックされたことを検知&IObservable型に変換(OnClickAsObservable())されたら、Subscribe(購読者)がsubject(川)にOnNextでUnit.Defaultというそうめん(イベント)を流す、そしてAddTo(this)でこのインスタンスが消滅した際にSubscribeをやめる

補足1

(_ => subject.OnNext(Unit.Default))

この書き方については
ラムダ式を用いた表現をしており

https://qiita.com/YSRKEN/items/5a36fb8071104a989fb8#q-%E3%83%A9%E3%83%A0%E3%83%80%E5%BC%8F%E3%81%AE--hoge%E3%81%A8_--hoge%E3%81%A3%E3%81%A6%E4%BD%95%E3%81%8C%E9%81%95%E3%81%86%E3%81%AE
の(() => ~)との違いを参照すると良い

補足2

今回の例ではprivateでsubjectを定義したが、他のファイルで参照したい場合は

public IObservable<Unit> subject => onClickSubject;
private Subject<Unit> subject = new Subject<Unit>();

こうすることによってonCklickSubjectとして他ファイルで変更はできなく、参照のみできるようになる。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0