Здравствуйте. Может кто помочь с задачей?: на сцене есть монеты,

после сбора которых на экране должно выводить какое либо сообщение(ты победил/все собрал). Я предполагаю, что делать через массив и FindgameobjectWithTag, но не получается полностью реализовать...

14 ответов

19 просмотров

FindgameobjectWithTag - Зачем?

Создаёшь скрипты-пустышки. Именуешь CoinSpawnPoint. Расставляешь по карте. На старте уровня - ищешь все эти скрипты, на их месте спавнишь нужные тебе коллектаблс. Заносишь все заспавненные коллектаблс в список. Прокидываешь в них скрипт-спавнер. При подборе коллектаблс - обращаешься к скрипту спавнеру и просишь удалить себя из списка. В корутине, которую запустил на старте уровня, ждёшь пока список всех коллектаблс не станет равным 0. Profit.

X Æ A-12- Автор вопроса

У меня монеты вручную расставлены. Вариант сверху пока проще реализоват. Но учту

X Æ A-12
У меня монеты вручную расставлены. Вариант сверху ...

Так по факту +- то же самое будет. На родителе скрипт с счётчиком и ждёшь нуля , просто без спауна

X Æ A-12
У меня монеты вручную расставлены. Вариант сверху ...

Варианты сверху мало того что по производительности будут бить, используя теги и проходясь по всем объектам на сцене, так ещё и при попытке добавить логики придётся писать костыли. Про возможность в один клик подменить все нужные тебе объекты на новые, я и вовсе молчу

Илья
Варианты сверху мало того что по производительност...

А лучше расставлять пустышки, искать их на сцене,удалять, создавать новые объекты , кэшируешь их с помощью того же поиска в спавнер ? Почему это производительнее чем положить все в родителя? Я может что-то не так поняла

Poli lova
А лучше расставлять пустышки, искать их на сцене,у...

Дело в том, что жизнь разработчика полна сюрпризов. Сегодня ты сделать вариант "по-проще". А завтра приходит геймдиз и просит тебя на месте монеток заспавнить врагов и ты в мыле сидишь всё переписываешь. На следующий день тебе скажут что всё фигня - давай вернёмся обратно к монеткам, только подкинем другой тип монеток. Ещё через день попросят не маяться фигнёй и добавить возможность проведения А/Б тестов. Поэтому лучше сразу учитывать такие неприятные вещи, тем более что для написания кода, который будет способен подстраиваться под разные ситуации, много времени не нужно

Илья
Дело в том, что жизнь разработчика полна сюрпризов...

Все равно не вижу проблемы пихать все в родителя Объект сам себя удалил, соответственно он сам убрался из списка , спавнера в каждом объекте хранить не надо, не надо никого на сцене искать и считать Провериь на ноль - просто на пустоту родителя Пихай туда что хочешь Если могут быть разных типов монеты - так интерфейсы в помощь

Poli lova
Все равно не вижу проблемы пихать все в родителя ...

Проверка на null в каждом кадре - тоже не бесплатное удовольствие. А я жадный. Да и в целом это такой себе архитектурный подход. Как и писал выше - банальная замена префаба монетки выльется в многочасовую боль. Особенно если монеток на уровне штук 300

Илья
Проверка на null в каждом кадре - тоже не бесплатн...

Ну поменять префабы это написать один скрипт для эдитора В твоём же варианте ты предлагал запустить корутину, которая ждёт пока список не станет 0 В чем отличие от запустить такую же и не ждать пока patent.length не станет 0?

Poli lova
Ну поменять префабы это написать один скрипт для э...

Потому что, как минимум, появляется зависимость от редактора юнити. Закинет твой коллега в этот объект какую-нибудь шелупонь, которая удаляться никогда не будет и всё - сиди думай почему у тебя игра не кончается. По поводу корутины - выбрал для примера как наиболее понятный. Для себя бы подключил UniRx, сделал бы ReactiveCollection и подписался на его "обнуление". Да и в целом многие моменты поменял бы. Но для старта - и предложенного варианта хватит, чтобы понять в какую сторону воевать

Poli lova
Ну поменять префабы это написать один скрипт для э...

Отличие в том, что не мешается иерархия сцены (конфигурация) и код. В этого родителя можно легко случайно добавить что-нибудь, что монеткой являться не будет. Если же использовать список/массив ICollectable/Coin, то ты точно можешь быть уверена, что там ничего кроме подбираемой монетки не будет лежать.

влад 🎃
Отличие в том, что не мешается иерархия сцены (кон...

Да, с этой точки зрения точно лучше:) поняла, спасибо

Похожие вопросы

Обсуждают сегодня

Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Ребят, подскажите, пожалуйста, почему в префиксе к ассетам, которые генерируются через фильтр | theme в шаблоне, стал вдруг появляться index.php? Вот так выглядит ссылка на а...
Виталий
1
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Коллеги, может знает кто, можно ли цвет бейджа счётчика в BackendMenu менять без бубнов?
Alex Blaze
3
Карта сайта