Unidade - Destruição de GameObject

A destruição de GameObjects é tão importante quanto a instanciação. Neste capítulo, aprenderemos como destruir os GameObjects.

Felizmente, destruir GameObjects é tão fácil quanto criá-los. Você simplesmente precisa de uma referência ao objeto a ser destruído e chamar oDestroy() método com esta referência como um parâmetro.

Agora, vamos tentar fazer 5 hexágonos que se destruirão quando uma tecla atribuída for pressionada.

Vamos fazer um novo script chamado HexagonDestroyere abra-o no Visual Studio. Começaremos tornando um públicoKeyCodevariável. Um KeyCode é usado para especificar uma tecla em um teclado padrão, e a classe Input em seus métodos a usa. Ao tornar essa variável pública, como fizemos com Rigidbody e Prefabs anteriormente, podemos torná-la acessível por meio do editor. Quando a variável é tornada pública, não precisamoshardcodevalores como “KeyCode.A” no código. O código pode ser flexível com quantos objetos quisermos.

public class HexagonDestroyer : MonoBehaviour {
   
   public KeyCode keyToDestroy;

   // Update is called once per frame
   void Update () {
      
      if (Input.GetKeyDown(keyToDestroy)) {
         Destroy (gameObject);
      }
   }
}

Observe como usamos a variável chamada “gameObject” (g minúsculo, O maiúsculo) no método. Esta novagameObject variável (do tipo GameObject) é usado para se referir ao gameObject ao qual este script está anexado. Se você anexar esse script a vários objetos, todos eles reagirão da mesma maneira sempre que essa variável estiver envolvida.

Não se confunda entre os dois, no entanto.

  • GameObject com G maiúsculo e O é o class que abrange todos os GameObjects e fornece métodos padrão como Instantiate, Destroy e métodos para buscar componentes.

  • gameObject com um small ge maiúsculo é o específico instance de um GameObject, usado para se referir ao gameObject ao qual este script está atualmente anexado.

Vamos agora compilar nosso código e voltar para o Unity.

Agora, vamos criar um novo sprite hexágono e anexar nosso script a ele. Em seguida, clique com o botão direito no gameObject na hierarquia e selecioneDuplicate. Um novo sprite é criado na hierarquia; você deve usar oMoveferramenta para reposicioná-lo. Repita as etapas para criar hexágonos semelhantes.

Clique em cada um dos hexágonos e observe seus componentes de script. Agora você pode definir as teclas individuais para que um GameObject se destrua quando essa tecla for pressionada. Por exemplo, vamos criar 5 hexágonos e defini-los para destruir quando as teclas A, S, D, F e G são pressionadas.

Você pode definir a mesma chave em vários hexágonos e todos eles se destruirão simultaneamente quando a tecla for pressionada; este é um exemplo do uso dogameObject referência, que você pode usar para se referir a objetos individuais usando o script sem precisar defini-los individualmente.

A mesma tecla pode ser definida em vários hexágonos e todos eles se destruirão simultaneamente quando a tecla for pressionada; este é um exemplo do uso dogameObject referência, que você pode usar para se referir a objetos individuais usando o script sem precisar defini-los individualmente.

É importante entender que destruir um GameObject não significa que um objeto se estilhaçará ou explodirá. Destruir um objeto simplesmente (e imediatamente) deixará de existir no que diz respeito ao jogo (e seu código). Os links para este objeto e suas referências agora estão quebrados e tentar acessar ou usar qualquer um deles normalmente resultará em erros e travamentos.