Three.js场景切换性能问题

Mat*_*ann 5 javascript performance three.js

我在three.js中创建了一个游戏,其中包含3个场景GameScene,MenuScene以及HighScoreScene.当玩家从不断变化的场景如-用户可以将这些场景之间切换MenuSceneHighScoreScene我试图从旧场景清理资源.

但清理资源似乎不起作用.所以这是我的代码,当用户在场景之间切换时,它会被执行:

所以在旧场景中我有这个动画循环:

 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();的场景实例.

这一切似乎都没有帮助游戏执行得更慢.

在这些场景之间切换和清理资源的正确方法是什么?我在这做错了什么?