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

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

14 ответов

18 просмотров

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, то ты точно можешь быть уверена, что там ничего кроме подбираемой монетки не будет лежать.

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

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

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

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

Ребята, всем привет. Подскажите, пожалуйста, можно ли как-то через бота понять, что этого бота добавили в группу\канал и выдали ему права администратора?
Artem Stormageddon
9
Это переведённый текст с английского. Я не говорю на русском, но могу использовать переводчик Телеграм. Приветствую! Я начинающий веб-разработчик и все еще учусь. В настояще...
𐩱𐩪𐩣𐩱𐩲𐩺𐩡
3
А не хотим ли мы развлечься? 😉 Но так чтобы с пользой для наших профессиональных навыков?? 👨‍🎓👩‍🎓 Предлагаю на октябрь запланировать тестовый запуск новой командной игры "Игр...
Andrii Kurdiumov
2
Привет всем! Почему этот код не срабатывает при добавлении или удалении пользователя из чата? bot.on('chat_member', async (ctx) => { console.log(ctx); }) bot.launch({allo...
Alexander
5
у кого сколько оперативы на базе данных ?
АДИЛЬБЕК
4
Через бот апи возможно получить ID стикерпака? Не ссылку.
Vexylon [АФК до 09.09]
5
Привет Хочу сделать аналог iCloud’а для своих проектов, чтобы пользовательская информация хранилась в облаке, была доступна во всех сервисах, её можно было подсасывать везде)...
Виталий
9
В тг можно спарсить всех кто пишет в группе? Если список участников скрыт
S
3
код Event::listen('cms.page.display', function (&$content, $slug, $page, $html) { if (is_object($content)) { dump($content); } else { dump($s...
Point 111
3
Всем привет. Не понимаю, в чём тут шутка юмора. Убирается только разрешение на send_messages. А send_media_messages остаётся. Как сделать, чтобы оба убирались? await b...
Alexander
2
Карта сайта