【发布时间】:2019-12-22 07:41:44
【问题描述】:
我正在编写一个地图编辑器,它将 3D 空间转换为 JavaScript 数组,以便可以将其导出为 JSON 文件。
每个地图都有一个 2D 平面作为地面层(用户必须指定 X 和 Y 大小),然后要添加高度,用户可以在该 2D 平面顶部放置块,遵循 X 和 Y网格(类似于 Minecraft)。
我的想法是为每个 Z 层创建一个数组,并在其中填充有关放置哪些块的信息。因为必须指定地图的 X 和 Y 大小,所以一个简单的数组应该可以解决问题,因为要读取地图,您只需为每个 Z 层数组循环并用其内容填充地图,这将是另一个数组。创建由地面层的 X 和 Y 大小定义的行。
我知道你可以填充像layer[165] = grassBlock 这样的数组
在您声明它们之后,这将使索引 165 之前的所有内容都为空,从而节省空间。但是在 JSON 格式中,该数组在到达该索引之前不会有 164 个零或空值吗?
这甚至是存储 3D 空间的最有效方式吗?我正在尝试尽可能减少地图大小并加快加载时间。
【问题讨论】:
-
您可以像地图一样存储列。值在 Map 中排序,因此
let column = new Map(); column.set(165, 'grass')意味着上面的所有内容都是无效的。 -
但是如何将所有这些地图存储到 JSON 文件中?我只是将其转换为数组吗?
-
是的,这里有一个例子:
json = JSON.stringify(Array.from(map.entries())); map = new Map(JSON.parse(json));
标签: javascript arrays performance 3d