Generare in una griglia
Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 64 di 85.
Un ciclo all'interno di un altro ciclo visita ogni cella di una griglia: il ciclo esterno sceglie una colonna, quello interno la percorre. Inserisci un Instantiate all'interno e ogni cella riceverà un oggetto. In questo modo si crea un pavimento di 3 per 3 con piastrelle larghe 2 unità, quindi le piastrelle saranno distanti 2 unità l'una dall'altra:
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);
}
}
}Le piastrelle si posizionano in x = 0, 2, 4 e z = 0, 2, 4: sono nove, da (0, 0, 0) a (4, 0, 4). I cicli vengono eseguiti in Start(), una volta sola. In Update() aggiungerebbero altre nove piastrelle a ogni fotogramma.
Il quarto argomento è un genitore. Nove oggetti Tile(Clone) indipendenti ingombrerebbero la Hierarchy; passando transform li si raggruppa sotto l'oggetto a cui è associato questo script, il Floor, così possono essere chiusi, spostati o eliminati insieme. La posizione passata è comunque una posizione nel mondo.
Sfida
MedioCostruisci un muro di prefabbricati Brick, largo 4 e alto 5.
- In
Start(), esegui un ciclo concda 0 a 3 e, al suo interno,rda 0 a 4. - Nel ciclo interno, chiama
Instantiate(brickPrefab, new Vector3(-1.5f + c, 0.25f + r * 0.5f, 0), Quaternion.identity, transform). L’ultimo argomento fa sì che ogni mattone diventi figlio di Wall.
Premi «Gioca»: sul terreno si trova un muro di 20 mattoni. Poi premi «Verifica».
Provalo tu
using UnityEngine;
public class WallBuilder : MonoBehaviour
{
public GameObject brickPrefab;
void Start()
{
// 4 colonne per 5 righe di mattoni, ciascuno figlio di questo Wall
}
}
Tutte le lezioni di Fondamenti di scripting in Unity
1Nozioni di base di C# in Unity
Ciao, UnityVariabiliI numeri decimali richiedono una fTesto nella ConsoleVariabili che ricordanoIf ed ElseConfrontare i numeriRipasso: il collezionista di monete7Cicli e metodi
Ripeti con forCicli annidatiScrivere un metodoMetodi che restituiscono valoriArrayRiepilogo: scala10Trovare gli oggetti
Trovare per nomeTagTrovare per tipoI riferimenti battono la ricercaIl null di UnityRipasso: la moneta più vicina13Progetto: Schiva i blocchi
Il corridoreBlocchi dal cielo2Fallo muovere
Posiziona il cuboMuovilo a ogni frameRuotalo ogni secondoGuidalo con i tastiRiepilogo: guida il cubo5Vettori
Somma di vettoriDirezioniSpazio locale e spazio mondoVelocità diagonaleDistanza tra gli oggettiVector3 è una structRiepilogo: pilota di droni8GameObject e componenti
Riferimenti nell'InspectorOttenere un componenteComponenti mancantiAggiungere un componenteRequireComponentMostrare e nascondereRiepilogo: interruttore della luce11Prefab e generazione di oggetti
Prefab e InstantiateGenerare con un timerGenerare in una grigliaElenchi di oggettiEliminare il più recenteDestroyGenerazioni casualiRipasso: fuochi d'artificio3L’Inspector
Campi dell’InspectorSerializeFieldNumeri decimali e MathfAttributi dell’InspectorRiepilogo: ascensore6Trasformazioni e gerarchia
Genitori e figliIssare la bandieraScalaOsservare gli oggettiMuoversi verso un puntoRiepilogo: Luna in orbita9Progetto: Acchiappa la stella
Il raccoglitoreUna stella cadente12Il ciclo di vita dello script
Awake e StartUpdate e LateUpdateOnEnable e OnDisableL'ordine del ciclo di vitaRiepilogo: Lifecycle LoggerEsercitati da solo: Playground Unity