ReactiveCollcetionを少し触った話

# ReactiveCollectionってなんぞい?

 

UniRxの中の便利グッズの一つ

配列に対して行われる追加、削除等の情報を気軽に受け取れるようになる。

 

## どういう時につかうの?

 

配列に対して要素が追加されたらUIにも変更を加えたりしたい時とか

そういう時に使うと良いんじゃないかなぁ…

(自分はアイテム一覧画面みたいなのでアイテムを手に入れると通知を受け取ってアイコン増やすみたいなの作った)

 

## どういうのがあるの?

 

自分が使ったものと事例を合わせて紹介。詳細はUnibook4に多分書く

### ObserveAdd

CollectionのInsertItemが呼ばれるタイミングで呼ばれるっぽい。

例えばAddとかの時(Insertでも呼ばれる)

ObserveAddに処理入れておくと追加されたアイテムを取得できる

 

// アイテムを入手したらアイコンをバッグに追加

ItemBag.ObserveAdd ().Subscribe (newItem => {

ItemBagView.AddIcon(newItem);

}).AddTo (this);

 

みたいな感じになるのかな?

 

### ObserveRemove

 

これも名前の通りRemoveとかのタイミングで呼ばれる

具体的にはCollectionのRemoveItemが呼ばれるタイミング。

(Remove,RemoveAtかな?)

 

// アイテムを捨てたり失ったらアイコンを削除

ItemBag.ObserveRemove ().Subscribe (lostItem => {

ItemBagView.RemoveIcon(lostItem);

}).AddTo (this);

 

こんな感じ?

 

### ObserveReset

 

これも上2つみたいにCollectionのCleaItemsが呼ばれる時に呼ばれる

多分publicなメソッドはClearだけかな…?他に知ってたら誰かおしえて。

 

// 初期化処理とか、ItemBagをClearしたらUIも綺麗にする

ItemBag.ObserveReset ().Subscribe (_ => {

ItemBagView.ClearIcons();

}).AddTo (this);

 

 

 

こんな感じなのをUnibookに描きます。

といっても文章もうちょっと直して自分が使った事例+ここに書いたことかくかんじ

 

Unibook4ってどこで手に入るの?って人は↓見てね!(コミケ三日目東ム-41b)

www.unity-bu.com

 

以上!

 

 

 

※ 参考

System.Collections.ObjectModel.Collection<T> について | C#.NET vs VB.NET

/*コードブロックに言語名を表示*/ pre.code:before { content: attr(data-lang); display: inline-block; background: #ccc; /*カラーコード変更*/ color: #666; padding: 3px; position: absolute; margin-left: -20px; /*表示位置を調整*/ margin-top: -30px; } pre.code { padding-top: 30px !important; border:2px solid #ccc; /*追加:コード表示部分の枠設定*/ background:#f8f8f8; /*追加:コード表示部分の背景色*/ position:relative; /*追加*/ }