Prefabs e Instantiate
Parte da seção Noções básicas de scripting no Unity do Journey de Unity da Coddy. Lição 48 de 67.
Um prefab é um GameObject salvo como modelo: arraste um objeto da Hierarchy para a janela Project, e o Unity o armazena com todos os seus componentes e valores do Inspector. O prefab em si não está na cena. Um script obtém um por meio de um campo, como qualquer outra referência: declare public GameObject parcelPrefab; e arraste o prefab para esse campo no Inspector.
Instantiate(prefab, position, rotation) cria uma cópia do prefab na cena e a retorna. Este drone de entrega solta um pacote na própria posição cada vez que a tecla Espaço é pressionada. Quaternion.identity significa nenhuma rotação:
public GameObject parcelPrefab;
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
Instantiate(parcelPrefab, transform.position, Quaternion.identity);
}
}Cada pressionamento adiciona mais um objeto à Hierarchy, chamado Parcel(Clone). O prefab permanece como estava, então cada cópia começa com os mesmos valores. GetKeyDown é importante aqui: com GetKey, manter a tecla Espaço pressionada por meio segundo soltaria cerca de 30 pacotes, um por quadro.
Desafio
MédioAs setas já movem o jogador. Faça cada clique gerar uma moeda acima dele:
- Adicione um campo público
GameObjectchamadocoinPrefab. A cena atribui o prefab Coin a ele assim que o campo existir. - Quando o botão esquerdo do mouse for clicado, gere uma cópia da moeda 2 unidades acima do jogador, sem rotação.
Pressione Jogar, mova-se e clique algumas vezes, depois Verificar.
Experimente você mesmo
using UnityEngine;
public class CoinDropper : MonoBehaviour
{
public float speed = 4f;
// coinPrefab: um campo público do tipo GameObject, preenchido com o prefab Coin
void Update()
{
if (Input.GetKey(KeyCode.RightArrow))
{
transform.position += new Vector3(speed * Time.deltaTime, 0, 0);
}
if (Input.GetKey(KeyCode.LeftArrow))
{
transform.position -= new Vector3(speed * Time.deltaTime, 0, 0);
}
// Clique: crie uma moeda 2 unidades acima do jogador
}
}
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Noções básicas de scripting no Unity
1Seu primeiro script
Olá, UnityPosicione o cuboMova a cada quadroGire a cada segundoConduza com as teclasRecapitulando: dirija o cubo4Vetores
Adicionando vetoresDireçõesEspaço local e espaço do mundoVelocidade diagonalDistância entre objetosVector3 é uma structRevisão: piloto de drone7Projeto: Pegue a Estrela
O ApanhadorUma Estrela Cadente10O ciclo de vida dos scripts
Awake e StartUpdate e LateUpdateOnEnable e OnDisableA ordem do ciclo de vidaRevisão: registrador do ciclo de vida5Transformações e Hierarquia
Pais e FilhosEscalaObserve as CoisasMova-se em Direção a um PontoRevisão: Lua em Órbita6GameObjects e Componentes
Referências no InspectorObter um ComponenteComponentes AusentesAdicionar um ComponenteRequireComponentMostrar e OcultarRevisão: Interruptor de Luz9Prefabs e criação de objetos
Prefabs e InstantiateCriar objetos com um temporizadorCriar objetos em uma gradeListas de objetosDestruirCriação aleatória de objetosRevisão: fogos de artifício