イベント駆動の動かし方を教わったので忘れないようにメモ
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として他ファイルで変更はできなく、参照のみできるようになる。