「Unity/UniRx/値変更検知/配列」の版間の差分
提供: 初心者エンジニアの簡易メモ
細 (Admin がページ「Unity/UniRx/値変更検知配列」を「Unity/UniRx/値変更検知/配列」に、リダイレクトを残さずに移動しました) |
|||
行5: | 行5: | ||
public class ReactiveConnectionScene : MonoBehaviour | public class ReactiveConnectionScene : MonoBehaviour | ||
{ | { | ||
− | private ReactiveCollection< | + | private ReactiveCollection<string> users = new ReactiveCollection<string>(); |
void Start() | 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() | .ObserveReplace() | ||
.Subscribe(value => | .Subscribe(value => | ||
{ | { | ||
Debug.Log($"[Replace]Index={value.Index},NewValue={value.NewValue},OldValue={value.OldValue}"); | 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) | ||
} | } | ||
} | } |
2022年3月29日 (火) 02:59時点における版
配列の検知更新
値を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) } }
出力
[Replace]Index=0,NewValue=3,OldValue=10