【发布时间】:2017-12-20 12:13:48
【问题描述】:
我有服务器,以这种 JSON 格式每滴答声(10/秒)向客户端(C# - Unity3D)发送 JSON 数据:
{
"bullets": {
"123": {
"x" : 1.23,
"y": 23.4
},
"234": {
same...
}
...
}
我所拥有的是,当它们不在字典中时,我将它们添加到字典中。当它们在字典中时,我只是更新 xy 位置。
我还需要一件我不知道怎么做的东西。我需要删除所有不在 JSON 收入中的项目符号。这意味着,当子弹在服务器上被删除时,服务器只是停止发送这个子弹的位置,客户端必须将它从他的字典中删除(当然也从场景中删除,但这不是问题)。
那么有一些方法可以在不使用服务器向客户端发送消息的情况下实现这一点,那个子弹被删除了吗?我的意思是,这只是逻辑问题,但我真的不知道该怎么做。
【问题讨论】:
-
您可以拥有从字典键 (listA) 获得的项目符号列表。然后迭代 json 以获取项目符号,在 listA 中检查它,如果存在,将其移动到新的 listB 中。如果不存在,请将其添加到新列表 B。最后,你有 listA 和一个死子弹列表,listB 是来自服务器的活动子弹列表。然后你可以重建你的字典。
-
但是我认为如果字典中的子弹数是'n'并且JSON中的子弹数是'm',我会得到O(n * m)。当我每秒执行 10 倍(计划为 20 秒)时,这是个坏主意
-
这将是 O(m) 因为你只运行 json 字典。我只是不明白你为什么要存储它们。只需运行并更新。而已。特别是如果像您所说的那样自动处理删除的那些。