Три JS: удаление и загрузка нового объекта в той же сцене - PullRequest
0 голосов
/ 29 марта 2020

У меня есть одна сцена, я добавляю меню, чтобы выбрать в этой сцене стиль, в котором вы хотите играть, современный или классический c. Обе сцены работают отлично, когда я меняю стиль, я удаляю все объекты со сцены, чтобы инициализировать новые объекты. Когда новая сцена загружена, работает, потому что вы можете играть (я отмечал), но вы не можете видеть игровую область только на сером фоне, обычно она должна отображаться на фоне меню, как это происходит в начале. как я удаляю свой объект:

  // 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 (), я использую эту функцию для запуска игры в начале, она предназначена для инициализации всего, что нам нужно, рендерер, камера, объект ... Я не знаю, в чем проблема, я думал, что это от рендерера, но кажется, что он вызывается правильно. При запуске игры и при смене стиля

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...