Menu
CoddyTech

In einem Raster spawnen

Teil des Abschnitts Grundlagen des Scripting in Unity der Unity-Journey von Coddy. Lektion 50 von 67.

Eine Schleife in einer Schleife besucht jede Zelle eines Rasters: Die äußere Schleife wählt eine Spalte aus, die innere durchläuft sie. Füge ein Instantiate hinein, und jede Zelle erhält ein Objekt. Damit wird ein 3 mal 3 großer Boden aus Kacheln mit einer Breite von 2 Einheiten erstellt, sodass die Kacheln 2 Einheiten voneinander entfernt sind:

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: neun Stück, von (0, 0, 0) bis (4, 0, 4). Die Schleifen werden einmal in Start() ausgeführt. 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 unter dem Objekt abgelegt, an dem dieses Skript hängt, dem Floor. So können sie eingeklappt, gemeinsam verschoben oder gemeinsam gelöscht werden. Die Position, die du übergibst, ist weiterhin eine Weltposition.

challenge icon

Aufgabe

Mittel

Baue aus dem Brick-Prefab eine Ziegelmauer, die 4 Ziegel breit und 5 Reihen hoch ist und auf dem Boden steht. Ein Ziegel ist 1 Einheit breit und 0.5 hoch.

  • Die 4 Spalten befinden sich bei x = -1.5, -0.5, 0.5 und 1.5.
  • Die unterste Reihe steht auf dem Boden, daher befinden sich ihre Ziegel bei y = 0.25. Jede Reihe liegt 0.5 über der darunterliegenden.
  • Jeder Ziegel befindet sich bei z = 0, ist nicht gedreht und ist ein untergeordnetes Objekt von Wall, dem Objekt, auf dem sich dieses Skript befindet.

Drücke Play, um die Mauer zu sehen, und dann Check.

Probier es selbst

using UnityEngine;

public class WallBuilder : MonoBehaviour
{
    public GameObject brickPrefab;

    void Start()
    {
        // 4 Spalten mit 5 Ziegelreihen, jeder Ziegel ein Kindobjekt dieser Wall
    }
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen des Scripting in Unity