unitysocket收发数据,怎么判断接收到的数据和上次的一不一样?

服务器给客户端发送消息,如果一直发送A消息,那客户端只收到第一次A消息,再收到A消息就自动屏蔽,如果服务器又发送了B消息,客户端判断B消息与A消息不一样,就让B消息替换A消息,执行B消息,如果再接收B消息,依次循环,得怎么办?

做一个临时缓存 只存储当前的数据 每次有数据过来就对比下

你把消息存个地方,判断不就行了,还能怎么办

你都说要判定,所以问题很简单,那就是判定依据。在C#里就是自己实现IEqualityComparer比较接口
置于剩下的事情,你是想入上面一样搞个临时变量还是想直接使用Rx.net 的Distinct方法自己选

抛出IEqualityCompare接口实现不管,我可以展示一下Rx.net 的效果(因为我不知道你如何确定A和B是不同消息规则,所以我也不打算实现他,我就用已经内置比较器的int做演示)

nuget:System.Reactive

  //rx的一个中间上下文对象
            Subject<int> source = new Subject<int>();
         //为了展示效果,我先订阅原始数据   
            source.Subscribe(p =>
            {

                Console.WriteLine($"原始消息:{p}");
            });

            //此处我过滤所有已经出现的,当然这种方式会需要消耗内存,我没看内部算法,但不外乎hash表,布隆过滤器,如果你一定需要如此我也没办法(或许可以依靠时间依赖缓存,毕竟我们一般只需要比较10分钟内,不需要保证100天内不重复的)
            source.Distinct().Subscribe(p =>
            {
                //
                Console.WriteLine($"全过滤的消息:{p}");
            });
            //下面这个是我建议使用的,仅仅过滤连续重复的
            source.DistinctUntilChanged().Subscribe(p =>
            {
                //
                Console.WriteLine($"连续重复过滤的消息:{p}");
            });

            //使用一个任务模拟你服务器发送的过程,每隔一秒从队列里拿一条数据发出去
            //当然你看到数据会有连续重复数据
            Task.Run(async () =>
            {
               Queue Queque = new Queue(new List<int> { 1, 2, 3, 3, 3, 4, 1, 3, 3, 2, 2 });
                //
                while (Queque.Count>0)
                {
                    source.OnNext((int)Queque.Dequeue());
                    await Task.Delay(1000);
                }

            });