Menu
CoddyTech

Создание объектов в сетке

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

Вложенный цикл обходит каждую ячейку сетки: внешний цикл выбирает столбец, внутренний проходит вдоль него. Помести внутрь Instantiate, и в каждой ячейке появится объект. Так создаётся пол размером 3 на 3 из плиток шириной 2 единицы, поэтому плитки располагаются на расстоянии 2 единиц друг от друга:

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

Плитки окажутся в точках x = 0, 2, 4 и z = 0, 2, 4: всего их девять, от (0, 0, 0) до (4, 0, 4). Циклы выполняются в Start() один раз. В Update() они добавляли бы ещё девять плиток в каждом кадре.

Четвёртый аргумент — родительский объект. Девять отдельных объектов Tile(Clone) загромождали бы окно Hierarchy; передав transform, ты помещаешь их в иерархию объекта, на котором находится этот скрипт, — Floor. Так их можно свернуть, переместить вместе или удалить вместе. Передаваемая позиция по-прежнему является мировой позицией.

challenge icon

Задание

Средне

Построй кирпичную стену из префаба Brick шириной в 4 кирпича и высотой в 5 рядов, стоящую на земле. Ширина кирпича — 1 единица, высота — 0.5.

  • 4 столбца находятся в точках x = -1.5, -0.5, 0.5 и 1.5.
  • Нижний ряд стоит на земле, поэтому кирпичи в нём находятся на высоте y = 0.25. Каждый следующий ряд на 0.5 выше предыдущего.
  • Каждый кирпич находится на z = 0, не имеет поворота и является дочерним объектом Wall — объекта, на котором находится этот скрипт.

Нажми Play, чтобы увидеть стену, а затем Check.

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

using UnityEngine;

public class WallBuilder : MonoBehaviour
{
    public GameObject brickPrefab;

    void Start()
    {
        // 4 столбца и 5 рядов кирпичей, каждый из которых — дочерний объект этого Wall
    }
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

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