Menu
CoddyTech

Tablice

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

Tablica przechowuje wiele wartości jednego typu w szeregu. Po nazwie jej typu umieszcza się nawiasy kwadratowe, a wartości zapisuje się w nawiasach klamrowych:

int[] scores = { 10, 25, 7 };

Każda wartość ma indeks, czyli swoje miejsce w szeregu, a liczenie zaczyna się od 0: scores[0] to 10, scores[1] to 25, a scores[2] to 7. scores.Length oznacza liczbę wartości — w tym przypadku 3. Odwołanie się do scores[3] zatrzymuje skrypt i zgłasza wyjątek IndexOutOfRangeException: nie ma czwartej wartości.

Pętla for aż do Length odwiedza każdą wartość, niezależnie od zawartości tablicy:

for (int i = 0; i < scores.Length; i++)
{
    Debug.Log("Score " + i + ": " + scores[i]);
}

Jeśli indeks nie jest potrzebny, foreach jest krótsza: foreach (int s in scores) { Debug.Log(s); } wykonuje się raz dla każdej wartości, po kolei.

challenge icon

Wyzwanie

Średni

Utwórz panoramę z 7 wież, używając tablicy i pętli.

  1. Dodaj 6f i 2f na końcu tablicy heights: { 2f, 5f, 3f, 1f, 4f, 6f, 2f }.
  2. Zastąp wiersz PlaceTower instrukcją for (int i = 0; i < heights.Length; i++).
  3. Wewnątrz niej wywołaj PlaceTower(i * 1.5f - 4.5f, heights[i]);.

Naciśnij „Graj”: siedem wież o różnych wysokościach stoi w rzędzie. Następnie naciśnij „Sprawdź”.

Spróbuj swoich sił

using UnityEngine;

public class Skyline : MonoBehaviour
{
    void Start()
    {
        float[] heights = { 2f, 5f, 3f, 1f, 4f };

        // Umieść po jednej wieży dla każdej wysokości.
        PlaceTower(-4.5f, heights[0]);
    }

    void PlaceTower(float x, float height)
    {
        GameObject tower = GameObject.CreatePrimitive(PrimitiveType.Cube);
        tower.name = "Tower";
        tower.transform.position = new Vector3(x, height / 2, 0);
        tower.transform.localScale = new Vector3(1, height, 1);
        tower.GetComponent<Renderer>().material.color = new Color(0.35f, 0.45f, 0.7f);
    }
}

Wszystkie lekcje w sekcji Podstawy skryptów w Unity

Poćwicz samodzielnie: Edytor online Unity