Mat*_*ann 5 javascript performance three.js
我在three.js中创建了一个游戏,其中包含3个场景GameScene,MenuScene以及HighScoreScene.当玩家从不断变化的场景如-用户可以将这些场景之间切换MenuScene到HighScoreScene我试图从旧场景清理资源.
但清理资源似乎不起作用.所以这是我的代码,当用户在场景之间切换时,它会被执行:
所以在旧场景中我有这个动画循环:
function cancelAnimation() {
cancelAnimationFrame(animationFrameId); // EXECUTING WHEN SWITCHING SCENE!!!
}
function animate() {
animationFrameId = requestAnimationFrame(animate); // Saving id
render();
}
function render() {
renderer.clear();
renderer.render(scene, camera);
}
Run Code Online (Sandbox Code Playgroud)
因此,当切换场景时,我取消设置所有点击监听器,我正在呼叫cancelAnimation.
因为我将每个场景的代码存储在一个对象中,就像var menuScene = new MenuScene()我menuScene = undefined在切换场景时也这样做.
我也传递相同var renderer = new THREE.WebGLRenderer();的场景实例.
这一切似乎都没有帮助游戏执行得更慢.
在这些场景之间切换和清理资源的正确方法是什么?我在这做错了什么?