Menu
CoddyTech

Arrays

Parte da seção Fundamentos de Scripting no Unity do Journey de Unity da Coddy. Lição 41 de 85.

Um array armazena vários valores de um mesmo tipo em sequência. Seu tipo tem colchetes depois dele, e seus valores ficam entre chaves:

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

Cada valor tem um índice, sua posição na sequência, e a contagem começa em 0: scores[0] é 10, scores[1] é 25 e scores[2] é 7. scores.Length indica quantos valores há, 3 neste caso. Acessar scores[3] interrompe o script com uma IndexOutOfRangeException: não existe um quarto valor.

Um loop for até Length percorre todos os valores, independentemente do que o array contém:

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

Quando você não precisa do índice, foreach é mais curto: foreach (int s in scores) { Debug.Log(s); } é executado uma vez para cada valor, em ordem.

challenge icon

Desafio

Médio

Faça o horizonte ter 7 torres de comprimento com um array e um loop.

  1. Adicione 6f e 2f ao final de heights: { 2f, 5f, 3f, 1f, 4f, 6f, 2f }.
  2. Substitua a linha PlaceTower por for (int i = 0; i < heights.Length; i++).
  3. Dentro dele, chame PlaceTower(i * 1.5f - 4.5f, heights[i]);.

Pressione “Jogar”: sete torres de diferentes alturas ficam em uma fileira. Depois, “Verificar”.

Experimente você mesmo

using UnityEngine;

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

        // Posicione uma torre para cada altura.
        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);
    }
}

Todas as lições de Fundamentos de Scripting no Unity

Pratique por conta própria: Playground de Unity