【Unity】UniRx の復習
UniRxの概要
UniRxの覚え方
どういうものか
先に処理を登録して、特定の条件で実行するもの。
Update で if とか switch を使って色々処理を書かなくて済む。
下にいくつかまとめておく。
Subject
特定のタイミングに任意で実行したいとき用。
- Subject を作って Subscribe で実行したい処理を登録
- 実行したいときに OnNext で実行
ReactiveProperty
例えばHPが増減したらゲージが勝手に動くとかやりたいとき用。
- var rp = new ReactiveProperty<型> で作成
- Start等で Subscribe でやりたい処理を登録
- rp.Value で値を変更すると即実行
OnTrriger
特定のコリジョンに入ったり、中に居たり、出たとき用。
- 2つのオブジェクトを用意
- どちらかにRigidBodyをつけ、対象にColliderつける
- ColliderのIsTrrigerにチェック
- このColliderに対して下記の条件を満たすと実行
→ 入ったとき(OnTriggerEnterAsObservable)
→ 入ってるとき(OnTriggerStayAsObservable)
→ 出たとき(OnTriggerExitAsObservable) - ちなみに2D用のOnTrrigerもある
処理を停止するオペレータ
AddTo(this)
- 処理の最後に .AddTo(this) と足しておくと
該当するゲームオブジェクトがDestroyしたときに処理を停止してくれる - Observable.Timer等の常時監視する処理に付け足しておく
- AddTo は Dispose のみ。OnComplete は発行されない
TakeUntilDestroy(this)
- 処理の途中で .TakeUntilDestroy(this) と足しておくと
該当するゲームオブジェクトがDestroyしたときに処理を停止してくれる - そこまでは AddTo と同じだが、TakeUntilDestroy は OnComplete を発行する