Не знаю, как это описать программно. Помогите.
Задача в том, что есть 10 GameObject'ов. Есть скрипт, постоянно на них воздействующий монотонной работой (допустим увеличивает их в размере каждый кадр). Цель: увеличить с 1 метра до 10.
GameObject'ы стартуют с разных размеров, кто-то быстрее дойдет до 10 метров, кто-то позднее. Кто дошел - удаляется из листа, т.е. скрипт больше на него не воздействует. Есть еще рандомное количество GameObject'ов в запасе, когда в первом списке кто-то удалился (их стало 9), берется кто-то из этого рандома и добавляется в тот список. И теперь он тоже растет в размерах.
Вот такая задача. Проблема в реализации списков из GameObject'ов, нахождение конкретных GameObject'ов в них, управление ими и их удаление. Не получается это сделать. Покажите какой-нибудь механизм-пример.
в чем проблема сделать список GameObject'ов List<GameObject> currentGOList;
циклом по нему пройтись - вы тоже должны были в глаза "for" видеть.
проверить размер - бери transform.scale и проверяй.
удалить и добавить элемент списка - тоже проще простого (тут только не забыть бы вам что индекс в списке сместится и скорректировать )
Вы бы хотя бы начали реализовывать -> столкнулись с проблемой какой-то -> сюда писать с "почему-то не заменяется удаленный объект на новый из запасного списка" или с подобным вопросом и примером своего кода.
Denis Gaydak, спасибо за отклик, я не совсем новичок. Я попытался сам, но например в поиске нужного мне ГО в листе я не разобрался с List.Find() Там какая-то сложная схема с предикатами, делегатами на сайте майкрософта, я не врубился от слова вообще как это совместить с юнитевскими ГО. Ваш вариант другой подход имеет - ручной перебор списка с сопоставлением. Про эту возможность я как-то подзабыл, рассмотрю такой вариант.
про Find через линкью. давайте примерчик вам сделаю.
List<GameObject> currentGOList = new List<GameObject>();
var findOneGOWithMaxScale = currentGOList .Find(item => (item.transform.scale.x > maxScale));
item - это просто объект того же типа что и объекты в списке, в данном случае GameObject .
после "=>" - просто условие , которое будет проверяться и найдет тот объект, где будет возвращено true;
вроде довольно просто
ну и вообще ятак понял что у вас был принцип чтоб каждый такой объект проверял список и искал себе замену или что-то в таком духе.
но это не очень оптимально. вам бы генераторо-спаунер один централизованный сделать.
допустим рост может быть внутри объект (еще бы через какой-нить универсальный интерфеис с методом "Действие" задаваемое из спаунера), но проверка, замена/создание - точно один главный менеджер.