Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
2 / 2 / 0
Регистрация: 19.08.2022
Сообщений: 13

Как перезапустить таймер?

21.02.2023, 20:56. Показов 2185. Ответов 10

Студворк — интернет-сервис помощи студентам
Здравствуйте, есть простой 20-ти секундный таймер, который выглядит как убывающая полоса. Как сделать его перезапуск по нажатию кнопки?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Image timerBar;
    public float maTime = 20f;
    float timeLeft;
    public GameObject Lvl;
    void Start()
    {
        timerBar = GetComponent<Image>();
        timeLeft = maTime;
    }
 
    void Update()
    {
        if(timeLeft > 0)
        {
            timeLeft -= Time.deltaTime;
            timerBar.fillAmount = timeLeft / maTime;
        }
        else
        {
            Destroy(gameObject);
            Lvl.SetActive(false);
        }
    }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.02.2023, 20:56
Ответы с готовыми решениями:

Как перезапустить сцену?
Не могу перезапустить сцену, точнее сцена перезагружается, но враги перестают спавнится и управление персонажем не работает, то есть сцена...

Как перезапустить таймер
Здравствуйте!! А не мог бы кто-нибудь подсказать, что произойдет с таймером, если выполнить Timer.Start(), когда таймер уже запущен...

Как перезапустить таймер T0 на 2313?
Подскажите пож, как произвольно перезапускать таймер T0 на tiny2313? просто PSR10_bit:= 1; не помогает.

10
25 / 15 / 10
Регистрация: 18.08.2022
Сообщений: 44
21.02.2023, 22:42
Itda, просто создайте новый публичный метод для кнопки. И в кнопке в OnClick() добавьте этот метод. При нажатии на кнопку переменной timeLeft снова установится значение 20(maTime)
C#
1
2
3
4
public void ReloadTime()
{
    timeLeft = maTime;
}
0
2 / 2 / 0
Регистрация: 19.08.2022
Сообщений: 13
22.02.2023, 13:28  [ТС]
К сожалению так делаю, но ничего не происходит(
0
25 / 15 / 10
Регистрация: 18.08.2022
Сообщений: 44
22.02.2023, 14:39
Itda, ну да, счас заметил. У вас проблема в том, что когда таймер доходит до 0, вы удаляете тот объект на котором скрипт. 20 строчка в вашем коде (пишу с телефона не могу "цитировать" этот участок). Вы ошибочно удаляете объект на котором таймер? Или с какой-то целью? Объясните, за что должен отвечать этот таймер?
0
2 / 2 / 0
Регистрация: 19.08.2022
Сообщений: 13
22.02.2023, 14:46  [ТС]
DzmitryShunko, Я это уже исправил, сейчас когда таймер доходит до 0 он выключает один объект и включает другой. Это работает, но я не знаю как сделать, что бы по нажатию кнопки(button) таймер перезапускался
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 public float maTime = 20f;
    float timeLeft;
    public GameObject Lvl;
    public GameObject MainMenu;
    void Start()
    {
        timerBar = GetComponent<Image>();
        timeLeft = maTime;
    }
 
    void Update()
    {
        if(timeLeft > 0)
        {
            timeLeft -= Time.deltaTime;
            timerBar.fillAmount = timeLeft / maTime;
        }
        else
        {
            MainMenu.SetActive(true);
            Lvl.SetActive(false);
        }
    }
0
25 / 15 / 10
Регистрация: 18.08.2022
Сообщений: 44
22.02.2023, 15:25
Itda, а на каком объекте у вас висит этот скрипт? Случаем не на том же, который называется Lvl в скрипте? Просто если вы выключаете объект со скриптом, скрипт на нем перестает работать. Тогда вам нужно будет повесить скрипт на другой объект(пустышку) и перезапуск таймера сделать, как раньше и делали.
0
2 / 2 / 0
Регистрация: 19.08.2022
Сообщений: 13
22.02.2023, 21:16  [ТС]
DzmitryShunko, таймер(объект на котором висит скрипт) находится в объекте Lvl , поэтому когда выключается Lvl выключается и таймер, но даже если сделать таймер и кнопку с функцией ReloadTime() в главном меню, таймер будет корректно работать, выполняя свои функции, но при нажатии на кнопку, время восстанавливаться не будет

Добавлено через 39 минут
Проблема в том, что таймер выглядит как полоса, которая постепенно убывает. Только что попробовал сделать таймер в виде отсчёта цифр, он работает и перезапускается при нажатии кнопки.
0
25 / 15 / 10
Регистрация: 18.08.2022
Сообщений: 44
22.02.2023, 22:16
Itda, Я скопировал ваш скрипт, добавил 2 объекта(Lvl и MainMenu) таймер и кнопку - и у меня все работает) Таймер перезапускается, и полоса таймера корректно отображается во всех случаях (за исключением того, когда таймер находится на объекте lvl, который по истечению времени выключается.(или на другом не активном объекте(как MainMenu на 1 вложении).



У вас может объекты как то по-другому настроены? Или сам Image таймера?

Может можете скинуть скрин, так чтоб было видно окно иерархии? И в инспекторе Image и скрипт?
0
2 / 2 / 0
Регистрация: 19.08.2022
Сообщений: 13
22.02.2023, 23:53  [ТС]
В общем, не буду тратить ваше время, оставлю таймер, работающий через text. Спасибо за помощь!
0
25 / 15 / 10
Регистрация: 18.08.2022
Сообщений: 44
23.02.2023, 00:39
Itda, я пока что особо и не помог(
Насчет моего времени можете не пережевать, плюс мне уже самому интересно, что может быть не так и почему оно так странно работает. Я могу вам завтра скинуть проект с той сценой, где у меня получилось настроить таймер, если хотите. Вы пробовали следить за показателем Fill Amount через инспектор? Он изменяется когда таймер перезапущен? Попробуйте вынести эту строчку
C#
1
timerBar.fillAmount = timeLeft / maTime;
за пределы условия if
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
void Update()
    {
        if(timeLeft > 0)
        {
            timeLeft -= Time.deltaTime;
        }
        else
        {
            MainMenu.SetActive(true);
            Lvl.SetActive(false);
        }
        timerBar.fillAmount = timeLeft / maTime;
    }
0
2 / 2 / 0
Регистрация: 19.08.2022
Сообщений: 13
23.02.2023, 13:36  [ТС]
DzmitryShunko, Я понял в чём была проблема, почему-то скрипт висел на нескольких объектах и когда я перезапускал время на одном объекте оно менялось, а на другом оставалось тем же. После того как я удалил лишний скрипт на объекте, ошибка исчезла
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.02.2023, 13:36
Помогаю со студенческими работами здесь

Перезапустить таймер
Доброе время суток. Подскажите пожалуйста, как перезапустить таймер? Есть label18 в котором идет отсчет до срабатывания процедуры ...

Как перезапустить программу?
Нужно чтобы по окончанию игры и выборе &quot;сыграть ещё раз&quot; игра перезапускалась снова в этом же окне или же в другом закрыв при этом 1е. ...

Как перезапустить программу
мне нужно чтобы программа запускалась заново или все переменные очистились (во всей программе) и запустилась функция main() char...

Как перезапустить цикл for?
У меня есть код Python, где я прокручиваю каждую строку в файловом объекте с типичным синтаксисом for line in file_object: Этот цикл имеет...

Как перезапустить приложение?
Как перезапустить приложение сначала ? Допустим есть кнопка на форме и при нажатии приложение выполняется сначала.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru