In einem Raster erzeugen
Teil des Abschnitts Unity-Scripting: Grundlagen der Unity-Journey von Coddy. Lektion 64 von 85.
Eine Schleife innerhalb einer Schleife besucht jede Zelle eines Rasters: Die äußere Schleife wählt eine Spalte aus, die innere läuft an ihr entlang. Füge darin ein Instantiate ein, und jede Zelle erhält ein Objekt. So entsteht aus Kacheln, die 2 Einheiten breit sind und 2 Einheiten Abstand haben, ein 3 mal 3 Einheiten großer Boden:
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);
}
}
}Die Kacheln landen bei x = 0, 2, 4 und z = 0, 2, 4: insgesamt neun, von (0, 0, 0) bis (4, 0, 4). Die Schleifen laufen einmal in Start(). In Update() würden sie in jedem Frame neun weitere Kacheln hinzufügen.
Das vierte Argument ist ein übergeordnetes Objekt. Neun lose Tile(Clone)-Objekte würden die Hierarchy unübersichtlich machen; mit transform werden sie dem Objekt untergeordnet, an dem dieses Skript hängt – dem Boden. So kannst du sie einklappen, gemeinsam verschieben oder zusammen löschen. Die Position, die du übergibst, ist weiterhin eine Weltposition.
Aufgabe
MittelBaue eine Wand aus Brick-Prefabs, 4 breit und 5 hoch.
- Schleife in
Start()cvon 0 bis 3 durch und darinrvon 0 bis 4. - Rufe in der inneren Schleife
Instantiate(brickPrefab, new Vector3(-1.5f + c, 0.25f + r * 0.5f, 0), Quaternion.identity, transform)auf. Das letzte Argument macht jeden Ziegel zu einem Kindobjekt der Wand.
Drücke „Spielen“: Eine Wand aus 20 Ziegeln steht auf dem Boden. Drücke dann „Prüfen“.
Probier es selbst
using UnityEngine;
public class WallBuilder : MonoBehaviour
{
public GameObject brickPrefab;
void Start()
{
// 4 Spalten mit 5 Reihen aus Ziegelsteinen, jeder ein Kindobjekt dieser Wall
}
}
Alle Lektionen in Unity-Scripting: Grundlagen
1C#-Grundlagen in Unity
Hallo, UnityVariablenDezimalzahlen brauchen ein fText in der KonsoleVariablen, die sich etwas merkenIf und ElseZahlen vergleichenRückblick: Münzsammler7Schleifen und Methoden
Wiederholen mit forSchleifen in SchleifenEine Methode schreibenMethoden mit RückgabewertArraysRückblick: Treppe10Dinge finden
Nach Namen suchenTagsNach Typ suchenReferenzen schlagen SuchenUnitys NullRückblick: nächste Münze13Projekt: Weiche den Blöcken aus
Der LäuferBlöcke vom Himmel2Bring es in Bewegung
Platziere den WürfelBewege ihn in jedem FrameDrehe ihn jede SekundeSteuere mit den TastenRückblick: Fahre den Würfel5Vektoren
Vektoren addierenRichtungenLokaler und globaler RaumDiagonale GeschwindigkeitAbstand zwischen ObjektenVector3 ist eine StrukturRückblick: Drohnenpilot8GameObjects und Komponenten
Referenzen im InspectorEine Komponente abrufenFehlende KomponentenEine Komponente hinzufügenRequireComponentEin- und AusblendenRückblick: Lichtschalter11Prefabs und Erzeugen von Instanzen
Prefabs und InstantiateNach Zeitintervall erzeugenIn einem Raster erzeugenListen von ObjektenDas Neueste zurücknehmenZerstörenZufälliges ErzeugenRückblick: Feuerwerk14Abschließende Herausforderungen
MünzmagnetDie Straße überquerenStraßenverkehrTurmbauerLanden oder verfehlen3Der Inspector
Inspector-FelderSerializeFieldFließkommazahlen und MathfInspector-AttributeRückblick: Aufzug6Transformationen und Hierarchie
Eltern und KinderHisse die FlaggeSkalierungDinge anschauenAuf einen Punkt zubewegenRückblick: Mond in Umlaufbahn9Projekt: Fang den Stern
Der FängerEin fallender Stern12Der Lebenszyklus eines Skripts
Awake und StartUpdate und LateUpdateOnEnable und OnDisableDie Reihenfolge im LebenszyklusRückblick: Lifecycle LoggerÜbe selbstständig: Unity-Playground