Gerar objetos em uma grade
Parte da seção Fundamentos de Scripting no Unity do Journey de Unity da Coddy. Lição 64 de 85.
Um loop dentro de outro loop percorre cada célula de uma grade: o loop externo escolhe uma coluna, e o loop interno percorre essa coluna. Coloque um Instantiate dentro dele, e cada célula receberá um objeto. Isso cria um piso de 3 por 3 a partir de peças com 2 unidades de largura, então elas ficam a 2 unidades de distância:
public GameObject tilePrefab;
void Start()
{
for (int x = 0; x < 3; x++)
{
for (int z = 0; z < 3; z++)
{
Vector3 spot = new Vector3(x * 2, 0, z * 2);
Instantiate(tilePrefab, spot, Quaternion.identity, transform);
}
}
}As peças ficam nas posições x = 0, 2, 4 e z = 0, 2, 4: são nove peças, de (0, 0, 0) a (4, 0, 4). Os loops são executados em Start(), uma vez. Em Update(), eles adicionariam mais nove peças a cada quadro.
O quarto argumento é um objeto pai. Nove objetos Tile(Clone) soltos deixariam a Hierarchy bagunçada; passar transform os organiza como filhos do objeto ao qual este script está anexado, o Floor, para que possam ser recolhidos, movidos juntos ou excluídos juntos. A posição passada ainda é uma posição no mundo.
Desafio
MédioConstrua uma parede de prefabs de tijolos, com 4 de largura e 5 de altura.
- Em
Start(), faça um loop decde 0 a 3 e, dentro dele, derde 0 a 4. - No loop interno, chame
Instantiate(brickPrefab, new Vector3(-1.5f + c, 0.25f + r * 0.5f, 0), Quaternion.identity, transform). O último argumento transforma cada tijolo em filho da parede.
Pressione “Jogar”: uma parede de 20 tijolos fica de pé no chão. Depois, pressione “Verificar”.
Experimente você mesmo
using UnityEngine;
public class WallBuilder : MonoBehaviour
{
public GameObject brickPrefab;
void Start()
{
// 4 colunas por 5 fileiras de tijolos, cada um filho deste Wall
}
}
Todas as lições de Fundamentos de Scripting no Unity
1Fundamentos de C# no Unity
Olá, UnityVariáveisDecimais precisam de um fTexto no ConsoleVariáveis que guardam valoresIf e ElseComparar númerosRevisão: Coletor de Moedas7Laços e Métodos
Repita com forLaços dentro de laçosEscreva um métodoMétodos que respondemArraysRevisão: Escada10Encontrando coisas
Buscar pelo nomeTagsBuscar por tipoReferências são melhores que FindO null do UnityRevisão: moeda mais próxima13Projeto: Desvie dos Blocos
O CorredorBlocos do Céu2Faça-o se mover
Posicione o cuboMova a cada quadroGire a cada segundoDirija com as teclasRecapitulando: dirija o cubo5Vetores
Somando vetoresDireçõesEspaço local e globalVelocidade diagonalDistância entre objetosVector3 é uma structRevisão: piloto de drone8GameObjects e Componentes
Referências no InspectorObter um componenteComponentes ausentesAdicionar um componenteRequireComponentMostrar e ocultarRevisão: Interruptor de luz11Prefabs e geração de objetos
Prefabs e InstantiateGerar objetos com um temporizadorGerar objetos em uma gradeListas de objetosRemover o mais recenteDestruirGeração aleatória de objetosRevisão: fogos de artifício6Transformações e hierarquia
Pais e filhosIçar a bandeiraEscalaOlhar para as coisasMover-se em direção a um pontoRevisão: Lua em órbita9Projeto: Pegue a Estrela
O PegadorUma Estrela CadentePratique por conta própria: Playground de Unity