Cursos / Jogos Digitais / Desenvolvimento com Motores de Jogos II / Aula
Já criamos nossos Prefabs e também suas instâncias usando o editor do Unity, posicionando-os nos locais desejados. Entretanto, no Unity é possível criar Prefabs através de scripts durante a execução do jogo. Isso é muito útil quando queremos criar GameObject instâncias de um Prefab em locais aleatórios, por exemplo, ou quando a sua criação depende do acontecimento de algum evento no jogo, como a criação de um novo projétil quando um jogador realiza um disparo, a criação de fragmentos de vidro quando o jogador quebra um espelho, etc. São várias as aplicações.
No nosso jogo criamos instâncias dos Prefabs arrastando-os para a cena, escolhendo uma posição. Não alteramos a sua rotação, deixando-a como 0,0,0 no Transform, que é seu valor padrão, mas também poderíamos ter mudado esse valor depois de arrastar o Prefab.
A criação de Prefabs por scripts é realizada com o método Instantiate e ele pode ser chamado de algumas formas distintas, com parâmetros diferentes. Essas formas são:
Os parâmetros significam:
original | Um objeto existente que você deseja fazer a cópia (O Prefab). |
position | Posição da nova instância. |
rotation | Rotação da nova instância. |
parent | O GameObject “pai” que a nova instância será criada como filha. |
instantiateInWorldSpace | Se quando associado ao pai a posição original relativa à cena será mantida. |
O método Instantiate retorna por padrão uma variável genérica do tipo Object, porém ela é uma referência para a instância recém-criada por ele. Caso você deseje manipular essa instância criada é muito comum armazená-la em uma variável do tipo GameObject (que é diferente de Object), e um modo de fazer isso é realizando uma conversão de tipos em C# adicionando “as GameObject” no final da chamada do método. Exemplo:
Versão 5.3 - Todos os Direitos reservados