気ままなUnityエンジニアブログ

新米Unityエンジニアが送る解説アウトプットブログです。Twitter : @UjinUnity

MENU

【Unity】UniRxのSubjectで弾の破棄処理を行う! 【ObjectPool】

スポンサーリンク

f:id:Wojtek:20190618082817g:plain


UniRxのSubjectを使って弾の破棄処理を作成しました。

基本 : BulletObjectに記載する変数

f:id:Wojtek:20190618001840p:plain

IObservable<Unit> OnDelete は 削除信号を外部に連絡するGetterです。

 

関数

 

f:id:Wojtek:20190618001806p:plain

こちらは作らなくても構いません。

今回は複数箇所でdeleteSubjectを使用するため作成しました。

内容はOnNextを飛ばしているだけです。

 

Streamを流すタイミング

f:id:Wojtek:20190618001918p:plain

f:id:Wojtek:20190618001935p:plain

今回は2箇所で読んでいます。

1番目は一定時間経過したら破棄されます。

2番目は特定の相手と接触したら破棄されます。

今回はこの2箇所で破棄ストリームが宣言されます。

 

ObjectPool側の処理

f:id:Wojtek:20190618001755p:plain

今回のバレットはUniRxのObjectPoolを使用しています。
そのためこの様な形になりました。

FirstOfDefault() は 最初に流れてきたストリームのみ購読するという機能があります。

先ほどの2箇所で、ほぼ同時に条件が重なって削除ストリームが流れた場合、最初に流れてきた部分で削除処理を行います。