我有一个场景,我添加了一个菜单,可以在此场景中选择要播放的风格,现代还是经典。两种场景都可以正常工作,当我更改样式时,我从场景中删除了所有对象以初始化新对象。当加载新场景时,因为您可以玩(我选中了),但您看不到游戏区域只有灰色背景,通常它应该像开始时一样在菜单背景上呈现。我如何删除对象:
// Remove object from previous scene
function cleanScene(){
deleteObjectFromScene();
RemoveSceneChild();
console.log("Deleting Scene done ! ");
setTimeout(go, 1500);
}
function deleteObjectFromScene(){
const cleanMaterial = material => {
console.log('dispose material!');
material.dispose();
// dispose textures
for (const key of Object.keys(material)) {
const value = material[key];
if (value && typeof value === 'object' && 'minFilter' in value) {
console.log('dispose texture!');
value.dispose();
}
}
}
console.log('dispose renderer!');
renderer.dispose();
scene.traverse(object => {
if (!object.isMesh) return;
console.log('dispose geometry!');
object.geometry.dispose();
if (object.material.isMaterial) {
cleanMaterial(object.material);
} else {
// an array of materials
for (const material of object.material) cleanMaterial(material)
}
})
}
function RemoveSceneChild(){
while(scene.children.length > 0){
scene.remove(scene.children[0]);
}
}
删除后,我调用go(),我从一开始就使用此函数启动游戏,它的功能是初始化我们需要的所有东西,渲染器,相机,对象...我不知道问题出在哪里,我以为它来自渲染器,但似乎调用正确。When launching the game和when changing style
我想我可以为您提供帮助,您有一个git存储库吗?