Menu
CoddyTech

Tworzenie obiektów w siatce

Część sekcji Podstawy skryptów w Unity ścieżki Unity w Coddy. Lekcja 64 z 85.

Pętla wewnątrz pętli odwiedza każdą komórkę siatki: pętla zewnętrzna wybiera kolumnę, a wewnętrzna przechodzi wzdłuż niej. Umieść w niej Instantiate, a w każdej komórce pojawi się obiekt. W ten sposób powstaje podłoga o wymiarach 3 na 3 z kafelków o szerokości 2 jednostek, rozmieszczonych co 2 jednostki:

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);
        }
    }
}

Kafelki pojawią się w punktach o współrzędnych x = 0, 2, 4 oraz z = 0, 2, 4: jest ich dziewięć, od (0, 0, 0) do (4, 0, 4). Pętle wykonują się raz w Start(). W Update() dodawałyby po dziewięć kolejnych kafelków w każdej klatce.

Czwarty argument to obiekt nadrzędny. Dziewięć niepowiązanych obiektów Tile(Clone) zaśmiecałoby Hierarchy; przekazanie transform umieszcza je pod obiektem, do którego przypisany jest ten skrypt, czyli pod Floor, dzięki czemu można je zwinąć, przenosić razem lub usunąć razem. Przekazana pozycja nadal jest pozycją w świecie.

challenge icon

Wyzwanie

Średni

Zbuduj ścianę z prefabów Brick o szerokości 4 i wysokości 5.

  1. W Start() wykonaj pętlę, w której c przyjmuje wartości od 0 do 3, a wewnątrz niej r od 0 do 4.
  2. W wewnętrznej pętli wywołaj Instantiate(brickPrefab, new Vector3(-1.5f + c, 0.25f + r * 0.5f, 0), Quaternion.identity, transform). Ostatni argument sprawia, że każda cegła staje się elementem podrzędnym obiektu Wall.

Naciśnij „Graj”: na ziemi stoi ściana z 20 cegieł. Następnie naciśnij „Sprawdź”.

Spróbuj swoich sił

using UnityEngine;

public class WallBuilder : MonoBehaviour
{
    public GameObject brickPrefab;

    void Start()
    {
        // 4 kolumny i 5 rzędów cegieł, każda jest obiektem potomnym tego Wall
    }
}

Wszystkie lekcje w sekcji Podstawy skryptów w Unity

Poćwicz samodzielnie: Edytor online Unity