Menu
CoddyTech

Массивы

Часть раздела Основы скриптинга в Unity путешествия по Unity на Coddy. Урок 41 из 85.

Массив хранит подряд много значений одного типа. После типа указываются квадратные скобки, а значения записываются в фигурных скобках:

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

У каждого значения есть индекс — его место в последовательности; отсчёт начинается с 0: scores[0] — это 10, scores[1] — 25, а scores[2] — 7. scores.Length показывает количество значений — в данном случае 3. Обращение к scores[3] остановит скрипт с исключением IndexOutOfRangeException: четвёртого значения нет.

Цикл for, выполняющийся до Length, перебирает все значения независимо от содержимого массива:

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

Если индекс не нужен, цикл foreach короче: foreach (int s in scores) { Debug.Log(s); } выполняется один раз для каждого значения по порядку.

challenge icon

Задание

Средне

Создай городской силуэт из 7 башен с помощью массива и цикла.

  1. Добавь 6f и 2f в конец heights: { 2f, 5f, 3f, 1f, 4f, 6f, 2f }.
  2. Замени строку PlaceTower на for (int i = 0; i < heights.Length; i++).
  3. Внутри него вызови PlaceTower(i * 1.5f - 4.5f, heights[i]);.

Нажми «Играть»: семь башен разной высоты выстроятся в ряд. Затем нажми «Проверить».

Попробуйте сами

using UnityEngine;

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

        // Разместите по одной башне для каждого значения высоты.
        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);
    }
}

Все уроки раздела Основы скриптинга в Unity

Потренируйтесь самостоятельно: Песочница Unity