【发布时间】:2016-05-03 16:09:14
【问题描述】:
我是 three.js 的新手,我正在尝试一个非常基本的射击游戏。用户应该拍摄一个彩色的箱子(盒子)。当他这样做时,箱子消失了,另一个随机箱子出现了,依此类推。
if (intersects.length > 0) {
intersects[0].object.material.color.setHex(Math.random() * 0xffffff);
scene.remove(object);
create_cube();
animate();
...
在着陆时,它工作得非常顺利。完全没有滞后。但是我射击的盒子越多,游戏就越开始滞后。
我在内存分配或垃圾收集方面做错了吗?
这是一个 JSfiddle:https://jsfiddle.net/k0s2nmru/
(虽然我的代码作为单独的页面可以正常工作,但放在 JSfiddle 中时似乎无法正常工作)
更新:
我添加了three.js 附带的统计信息。即使游戏开始滞后,它们也不断为我提供相当不错的每秒帧数(高达 150 帧或更多)。也许我没有以正确的方式实现它?
【问题讨论】:
-
除了 Vals 的建议之外,您还可以考虑对象池。 html5rocks.com/en/tutorials/speed/static-mem-pools
标签: javascript performance three.js