我正在开发一款 2D 游戏。我将游戏 map 保存在名为 gameMap 的 js 对象 {} 上。我的问题是读取矩阵上的项目需要太长时间。对于碰撞检测,我通常必须检查 map 矩阵的 10 或 20 个项目,这大约需要 1 毫秒,并且屏幕上有 10 个字符碰撞检测成为应用程序的瓶颈,每帧应该持续 16 毫秒,只需要 10 毫秒。另外,本地图变得太大时,也会按比例放大。
假设 map 有 1000 x 1000 个项目。现在,如果我想检查 (-100,200)
位置有什么,我会检查 gameMap['-100'][200]
。我的想法是将 map 划分为象限,将 100 x 100 个项目分组。因此,为了检查 (-100,200)
我会测试 gameMap[quadrantName][-100][200]
。这意味着虽然 gameMap 的大小大致相同,但它可以处理更少的项目,并且读取速度可能会以更小的比例扩大。有谁知道这是否会使阅读速度更快?我还能做些什么来提高阅读速度?
最佳答案
首先,一个 10000x10000 的字节数组将消耗 100MB!你真的需要这么大的阵列吗?也许您最好只存储所有元素的坐标...
关于你的问题 - 你可以将二维数组转换为一维数组并通过访问所有单元格
gameMap[y * 10000 + x]
其中 10000 是 map 的“宽度”。因此无需将 map 划分为象限。
关于javascript - 如何优化二维矩阵读取速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13947524/