为了账号安全,请及时绑定邮箱和手机立即绑定

Unity:从大型 CSV 文件读取和更新

Unity:从大型 CSV 文件读取和更新

C#
慕尼黑5688855 2021-07-13 10:45:37
我有一个数据的四列的非常大的CSV文件(100万+行)time,id,x和y。这是一个示例:t   id  x   y434 84  0   0435 84  28.22   -4.5435 611 1895.13 755.17435 872 2401.08 159.12435 65  0   226.39436 84  50.44   -4.5436 611 1890.63 732.5436 872 2373.9  151.04436 990 2614.97 372.74...在我的模拟中,随着时间的推移,我需要做三件事之一:如果这是第一次出现id,则在 x,y 坐标处创建一个具有该 id 的对象如果具有 id 的对象已存在,则更新该对象的 x,y 坐标如果 id 不再出现,则删除该对象我猜保持一个正在运行的计时器,每秒检查一次 CSV,用当前时间定位所有行并执行上述步骤之一是非常密集的。是否有更有效的方法来处理 Unity 模拟中的时间序列数据?
查看完整描述

1 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

对于这么大的文件,您应该开始寻找替代方案。这里有一些想法,但最佳选择取决于您具体在做什么。

  • 更新此 CSV 的组件可以直接与 Unity3d 通信吗?使用例如套接字连接将避免需要不断地在磁盘中保存和读取此信息。但是,这取决于如何创建此 CSV 数据,显然

  • 你能把csv分成更小的文件吗?例如,每个时间戳一个?这样,每一步更新模拟的开销就会减少。

  • 你能减少更新的频率吗?是否必须每秒更新一次?

  • 或者,您是否只能每隔 10 秒读取一次 CSV,然后加载接下来 10 秒的所有数据(例如,该范围内的所有时间戳),将它们存储在内存中,然后仅在接下来的 10 秒内读取使用内存中的信息来更新而不是再次读取文件?这将减少您对磁盘的调用。


查看完整回答
反对 回复 2021-07-18
  • 1 回答
  • 0 关注
  • 352 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信