sound sepher's PASTIME

ゲーム開発で思ったことや、趣味などの話を書き綴っていきます。

【Unity】UniRx の復習

UniRxの概要

qiita.com

UniRxの覚え方

どういうものか

先に処理を登録して、特定の条件で実行するもの。
Update で if とか switch を使って色々処理を書かなくて済む。

下にいくつかまとめておく。

Subject

特定のタイミングに任意で実行したいとき用。

  1. Subject を作って Subscribe で実行したい処理を登録
  2. 実行したいときに OnNext で実行

ReactiveProperty

例えばHPが増減したらゲージが勝手に動くとかやりたいとき用。

  1. var rp = new ReactiveProperty<型> で作成
  2. Start等で Subscribe でやりたい処理を登録
  3. rp.Value で値を変更すると即実行

OnTrriger

特定のコリジョンに入ったり、中に居たり、出たとき用。

  1. 2つのオブジェクトを用意
  2. どちらかにRigidBodyをつけ、対象にColliderつける
  3. ColliderのIsTrrigerにチェック
  4. このColliderに対して下記の条件を満たすと実行
    → 入ったとき(OnTriggerEnterAsObservable)
    → 入ってるとき(OnTriggerStayAsObservable)
    → 出たとき(OnTriggerExitAsObservable)
  5. ちなみに2D用のOnTrrigerもある

処理を停止するオペレータ

AddTo(this)
  • 処理の最後に .AddTo(this) と足しておくと
    該当するゲームオブジェクトがDestroyしたときに処理を停止してくれる
  • Observable.Timer等の常時監視する処理に付け足しておく
  • AddTo は Dispose のみ。OnComplete は発行されない
TakeUntilDestroy(this)
  • 処理の途中で .TakeUntilDestroy(this) と足しておくと
    該当するゲームオブジェクトがDestroyしたときに処理を停止してくれる
  • そこまでは AddTo と同じだが、TakeUntilDestroy は OnComplete を発行する

xr-hub.com

サンプル

qiita.com

オペレータ逆引き

qiita.com