Unity/UniRx/値変更検知/ReactiveCollection
提供: 初心者エンジニアの簡易メモ
配列の検知更新
値をReactiveCollectionで入れて、ObserveReplaceで検知する。
using UnityEngine;
using UniRx;
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
