[Unity] Автозаполнение массива объектов

Привет. Часто в Unity нужно заполнить SerializeFiled массив. Но после каких-то изменений это нужно делать снова. А потом снова. Добавить, удалить, заменить. Неудобно. Да и зачем? Ведь можно написать скрипт, который будет делать это за нас!

Переходим в Unity

Скрипт очень простой. Вместе с массивом объектов мы передадим объект родителя, который содержит все необходимые элементы. А уже на старте получим количество «детей» и добавим их в массив.

Если объекты массива нельзя собрать под одним объектом — решение не для вас. Но у меня это были монетки, враги и т.д. Так что особых проблем с их сбором не возникало.

Для примера я накидал такую структуру:

Coins — родитель. Все монетки на сцене — его дети.

Само собой, что добавить руками группу объектов не проблема, но когда их стаёт больше или меньше – уже надо редактировать руками.

Поэтому создаём скрипт. Я назвал его AutofillArray.

Вешаем Coins

Ещё раз разберём. У нас есть родитель. Получаем количество его детей, создаём массив на обозначенное количество и циклом записываем каждую монетку. Ничего сложного.

Теперь можно легко добавить текстовый счётчик «осталось/всего», или даже проверку на завершение уровня. Зависит от потребностей. А если изменилось количество элементов – ничего менять не нужно.

Запускаем и видим все монетки:

Я сменил цвет в режиме воспроизведения, чтобы случайно не наделать изменений, которые будут отменены. Вам тоже советую так сделать

Минусы: видим заполненный массив только в рантайме Unity. В режиме редактора массив будет пустым. И дополнительные задачи, код для самой автоматизации.

Вообще не обязательное решение, но как альтернатива – интересно.

Оригинал: How to Autofill Inspector Array Automatically with Script Unity

Интересное по теме

Простой таймер обратного отсчёта в Unity

Случайные подсказки на экране загрузки в Unity

Используем маски для UI и спрайтов

Оставьте комментарий

Прокрутить наверх