Unity/UniRx/値変更検知/配列
提供: 初心者エンジニアの簡易メモ
配列の検知更新
値をReactiveCollectionで入れて、ObserveReplaceで検知する。
public class ReactiveConnectionScene : MonoBehaviour { private ReactiveCollection<string> users = new ReactiveCollection<string>(); void Start() { users .ObserveAdd() .Subscribe(value => { Debug.Log($"[Add]Index={value.Index},Value={value.Value}"); }); users .ObserveMove() .Subscribe(value => { Debug.Log($"[Move]Value={value.Value},NewIndex={value.NewIndex},OldIndex={value.OldIndex}"); }); users .ObserveRemove() .Subscribe(value => { Debug.Log($"[Remove]Index={value.Index},Value={value.Value}"); }); users .ObserveReplace() .Subscribe(value => { Debug.Log($"[Replace]Index={value.Index},NewValue={value.NewValue},OldValue={value.OldValue}"); }); users .ObserveReset() .Subscribe(value => { Debug.Log($"[Reset]"); }); users.Add("taro"); users[0] = "taro!"; users.Add("jiro"); users.Add("saburo"); users.Move(0, 1); // 配列0を配列1へ移動(jiro, taro, saburo) users.Move(1, 2); // 配列1を配列2へ移動(jiro, saburo, taro) } }
出力
[Add]Index=0,Value=taro [Replace]Index=0,NewValue=taro!,OldValue=taro [Move]Value=taro!,NewIndex=1,OldIndex=0 [Move]Value=taro!,NewIndex=2,OldIndex=1