「Unity/UniRx/値変更検知/配列」の版間の差分
提供: 初心者エンジニアの簡易メモ
行50: | 行50: | ||
</pre> | </pre> | ||
出力 | 出力 | ||
− | + | <pre> | |
+ | [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 | ||
+ | </pre> | ||
参考:https://hal9.hateblo.jp/entry/2021/06/06/071739 | 参考:https://hal9.hateblo.jp/entry/2021/06/06/071739 |
2022年3月29日 (火) 03:00時点における最新版
配列の検知更新
値を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