Создание объектов в сетке
Часть раздела Основы скриптинга в 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. Так их можно свернуть, переместить вместе или удалить вместе. Передаваемая позиция по-прежнему является мировой позицией.
Задание
СреднеПострой кирпичную стену из префаба 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
}
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы скриптинга в Unity
1Ваш первый скрипт
Привет, UnityРазместите кубДвигайте каждый кадрПоворачивайте каждую секундуУправляйте клавишамиПовторение: управляйте кубом2Инспектор
Поля инспектораSerializeFieldЧисла с плавающей точкой и MathfАтрибуты инспектораПовторение: лифт5Преобразования и иерархия
Родители и детиМасштабПосмотри на объектыДвигайся к точкеПовторение: Луна на орбите6Игровые объекты и компоненты
Ссылки в InspectorПолучение компонентаОтсутствующие компонентыДобавление компонентаRequireComponentПоказать и скрытьПовторение: выключатель света9Префабы и создание объектов
Префабы и InstantiateСоздание объектов по таймеруСоздание объектов в сеткеСписки объектовDestroyСлучайное создание объектовПовторение: фейерверки