Как добавлять к переменной число каждую секунду?11.12.2021, 20:47. Показов 7542. Ответов 19
Короче, делаю что-то типо кликера и сейчас начал делать бустеры. Сделал первый и когда нажимаю на кнопку к которой привязн этот бустер то у меня Unity просто встаёт и отказывается подчиняться любым приказом. Приходится закрывать через диспетчер задач. У меня слабый комп и может из-за этого или ошибка в коде? Вот полный код для полноты картины:
Код бустера начинается на 49 строке
0
|
||||||
| 11.12.2021, 20:47 | |
|
Ответы с готовыми решениями:
19
Увеличение значение переменной на 1 каждую секунду Каждую секунду присвоить значение переменной равное элементу массива? |
|
19 / 12 / 7
Регистрация: 06.12.2019
Сообщений: 181
|
|
| 11.12.2021, 21:29 | |
|
Не уверен что можно делать условие в while
0
|
|
|
19 / 12 / 7
Регистрация: 06.12.2019
Сообщений: 181
|
|
| 11.12.2021, 21:39 | |
|
Не уверен что можно делать условие в while
0
|
|
| 11.12.2021, 23:15 [ТС] | |
|
Евгений15, я тоже не уверен, но мне в голову больше идеи не приходят как можно сделать бустер
0
|
|
|
19 / 12 / 7
Регистрация: 06.12.2019
Сообщений: 181
|
|
| 12.12.2021, 20:01 | |
|
а через просто if сделать ? или нужно каждую секунду если больше нуля ?
0
|
|
|
46 / 35 / 12
Регистрация: 15.11.2011
Сообщений: 204
|
||||||
| 12.12.2021, 20:57 | ||||||
|
Слабый комп - нет, это простейший алгоритм, а вот цикл вайл... Курсовые делали в 98 винде в турбоборланде, так вот с тех времен я стараюсь избегать использование конструкций типа while/while do/do while вообще
Использование его сопряжен с риском уводить программу в вечный цикл. Я решал недавно похожую задачу, мне надо было наращивать скорость по нажатию клавиши вперед и сбавлять скорость по нажатию клавиши назад. Только у вас переменная scoreУ меня просто на клавише метод был, отслеживающий клик, если клавиша UI отжата, плюсует/минусует скорость, чуть сложнее там, потому что при мощности движка >80% наращивания замедляется и куча еще всяких условий:
1
|
||||||
|
293 / 189 / 111
Регистрация: 22.07.2020
Сообщений: 538
|
|
| 12.12.2021, 21:19 | |
|
Fill Simpson, В вашем коде запускается "вечный цикл" while. Условие завершения цикла while(BusterOne > 0) - Означает ПОКА переменная BusterOne больше 0 выполнять цикл... А так как в коде вы стазу же присваиваете переменной BusterOne += 1 то оно всегда у вас больше 0. По этому всё и зависает. В коде я нигде не увидел условия обнуления переменной BusterOne. По этому всё и зависает наглухо.
На мой взгляд в этому случае лучше использовать корутины.
2
|
|
| 12.12.2021, 21:56 [ТС] | ||||||
|
Sprutnet Мне кажется у нас всё же разные задачи, void Update обновляется и выполняет свои действия намного чаще одной секунды. У вас всё будет отлично потому что нажатие клавиши будет проверяться чаще одной секунды, а мне нужно чтобы BusterOne прибавлял к score какое-то число каждую секунду. Я изменил код и так делать нельзя(наверное), теперь у меня void Update обновляется раз в 1-2 секунды. Если убрать Thread.Sleep(1000); то число score увеличивается намного чаще чем нужно.
Из-за того что void Update обновляется раз в 1-2 секунды то фпс в игре понижается очень сильно. И почему-то ещё к score прибавляется не 1,а 2 каждый раз
0
|
||||||
|
293 / 189 / 111
Регистрация: 22.07.2020
Сообщений: 538
|
||||||
| 12.12.2021, 22:33 | ||||||
Сообщение было отмечено Fill Simpson как решение
Решение
Fill Simpson,
Если нужно добавлять очки по времени, то лучше как-то так.
При нажатии на ескейп - начисление очков прекратится. При нажатии на пробел - продолжиться.
1
|
||||||
| 13.12.2021, 22:37 [ТС] | ||||||
|
Ronin_v, Ronin_v, я немного переписал код под себя и вроде всё заработало как надо, но появился баг. Вообще у меня магазин где я покупаю бустер и сцена там где отображаются деньги это 2 разные сцены. И когда я нахожусь в магазине то бустер увеличивает score правильно, но когда я перехожу на основную сцену, где отображается score то корутина срабатывает 2 раза подряд. Я искал в чём может быть проблема, но так ничего и не нашёл. Корутина нигде больше не запускается кроме private void Start(). В чём может быть проблема?
0
|
||||||
|
293 / 189 / 111
Регистрация: 22.07.2020
Сообщений: 538
|
|
| 13.12.2021, 22:48 | |
|
Fill Simpson, А если перейти со сцены 1 на сцену 2, а потом обратно на сцену 1 и обратно на сцену 2 - корутина запуститься 4 раза?
1
|
|
| 13.12.2021, 22:56 [ТС] | |
|
Ronin_v, Нет, вот я насобирал 1000 score очков, захожу на сцену с магазином, купил этот бустер и я там чтобы проверить что может быть не так написал в корутине Debug.Log("IEnumerator") и на сцене с магазином она обновляется как надо( в консоли Unity там типо 1,2,3,4...) а когда перехожу на основную сцену то обновляется каждый раз по 2( типо 1,2,3,4,5 потом перешёл на основную сцену и 7,9,11,13,15 если обратно в магазин перехожу то 16,17,18) Надеюсь понятно объяснил, если нет, то могу видео записать
0
|
|
|
293 / 189 / 111
Регистрация: 22.07.2020
Сообщений: 538
|
|
| 13.12.2021, 22:58 | |
|
1
|
|
| 13.12.2021, 23:05 [ТС] | |
|
Ronin_v,
0
|
|
|
293 / 189 / 111
Регистрация: 22.07.2020
Сообщений: 538
|
|
| 13.12.2021, 23:55 | |
|
Fill Simpson, Попробуйте продебажить старт корутины. Debug.Log в старте возле запуска корутины.
1
|
|
| 14.12.2021, 00:14 [ТС] | ||||||
|
Ronin_v, так?
0
|
||||||
|
293 / 189 / 111
Регистрация: 22.07.2020
Сообщений: 538
|
|
| 14.12.2021, 00:16 | |
|
Да. Что показывает? выводится один раз или два?
1
|
|
| 14.12.2021, 00:17 [ТС] | |
|
как только проект запустил 2 раза сразу
0
|
|
|
293 / 189 / 111
Регистрация: 22.07.2020
Сообщений: 538
|
|
| 14.12.2021, 00:45 | |
|
Fill Simpson, Думаю, у Вас в проекте есть дубляж. Возможно где-то продублирован это скрипт два раза. Вот он два раза и запускается. Проверьте внимательно все объекты. Не закинули ли Вы случайно два раза один и тот же скрипт на какой либо объект. Или возможно у Вас во время старта создается объект, на котором висит этот скрипт а он уже существует. По этому и скриптов тоже может быть два.
1
|
|
| 14.12.2021, 21:39 [ТС] | |
|
Ronin_v, нашёл, спасибо большое, всё работает как часики.
0
|
|
| 14.12.2021, 21:39 | |
|
Помогаю со студенческими работами здесь
20
При помощи таймера каждую секунду число a увеличивать, пока оно не станет равным числу b Как обновлять от <p> до </p> каждую секунду?
Как обновить значение функции каждую секунду? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|