我在three.js中创建了一个游戏,其中有3个场景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);
}
我尝试清理旧场景中的资源。
但清理资源似乎不起作用。 所以这是我的代码,当用户在场景之间切换时执行该代码:
所以在旧场景中我有这个动画循环:
cancelAnimation
因此,当切换场景时,我取消设置所有点击聆听者,并且我正在呼叫var menuScene = new MenuScene()
。
因为我在menuScene = undefined
这样的对象中存储每个场景的代码,所以在切换场景时我也会这样做var renderer = new THREE.WebGLRenderer();
。
我也将- (nullable UIView *)resizableSnapshotViewFromRect:(CGRect)rect afterScreenUpdates:(BOOL)afterUpdates withCapInsets:(UIEdgeInsets)
的同一个实例传递给了场景。
这一切似乎都没有帮助游戏执行得更慢。
在这些场景之间切换和清理资源的正确方法是什么?我在这做错了什么?