facebook twitter hatena line email

「Unity/UniRx/値変更検知/配列」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(Admin がページ「Unity/UniRx/値変更検知配列」を「Unity/UniRx/値変更検知/配列」に、リダイレクトを残さずに移動しました)
 
(同じ利用者による、間の1版が非表示)
行5: 行5:
 
public class ReactiveConnectionScene : MonoBehaviour
 
public class ReactiveConnectionScene : MonoBehaviour
 
{
 
{
     private ReactiveCollection<int> ages = new ReactiveCollection<int>();
+
     private ReactiveCollection<string> users = new ReactiveCollection<string>();
 
     void Start()
 
     void Start()
 
     {
 
     {
         ages
+
         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}");
 +
               
 
             });
 
             });
         ages.Add(10);
+
         users
         ages[0] = 3;
+
            .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)
 
     }
 
     }
 
}
 
}
 
</pre>
 
</pre>
 
出力
 
出力
[Replace]Index=0,NewValue=3,OldValue=10
+
<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

参考:https://hal9.hateblo.jp/entry/2021/06/06/071739