はじめに
ReactiveCollection
を使ってみたのでそこで分かったことを書き残しておきたいと思います。
ReactiveCollection
よく使った演算子はこちら
・ObserverAdd
・・・新しい要素が追加(Add)
・ObserverRemove
・・・要素を削除(Remove)
・ObserverCountChanged
・・・要素数が変化(Add,Remove)
ObserverReplace
(要素の上書き)やObserverMove
(要素の移動)なんかもありましたが正直使いどころがよく分からなかったです。
サンプルはこちら↓
using UnityEngine; using UniRx; public class UniRxTest : MonoBehaviour { void Start() { ReactiveCollection<string> names = new ReactiveCollection<string> { "スライム", "ドラキー", "ももんじゃ" }; names.ObserveAdd() .Subscribe(name => Debug.Log("Add: " + name)) .AddTo(this); names.ObserveRemove() .Subscribe(name => Debug.Log("Remove: " + name)) .AddTo(this); names.ObserveCountChanged() .Subscribe(count => Debug.Log("Count: " + count)) .AddTo(this); names.Add("メタルスライム"); //Add: メタルスライム Count: 4 names.Remove("スライム"); //Remove: スライム Count: 3 } }
ReactiveDictoinary
よく使った演算子はこちら
・ObserverAdd
・・・新しい要素が追加(Add)
・ObserverRemove
・・・要素を削除(Remove)
・ObserverCountChanged
・・・要素数が変化(Add,Remove)
全部同じですね。
こちらもObserverReplace
やObserverMove
もあるみたいです。
using UnityEngine; using UniRx; public class UniRxTest : MonoBehaviour { void Start() { ReactiveDictionary<string, string> monsters = new ReactiveDictionary<string, string> { {"スライム", "Slime"}, {"ドラキー", "Drakiy"}, {"ももんじゃ", "Monmonja"} }; monsters.ObserveAdd() .Subscribe(x => Debug.Log("Add: " + x.Value)) .AddTo(this); monsters.ObserveRemove() .Subscribe(x => Debug.Log("Remove: " + x.Value)) .AddTo(this); monsters.ObserveCountChanged() .Subscribe(count => Debug.Log("Count: " + count)) .AddTo(this); monsters.Add("メタルスライム", "MetalSlime"); //Add: MetalSlime Count: 4 monsters.Remove("スライム"); //Remove: Slime Count: 3 } }
さいごに
少しずつUniRxが分かってきたような・・・、というのは嘘で難しくて全然分かんないです。
それでもなぜか使いたくさせる謎の魅力がありますよね。精進します。