Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/549: Рейтинг темы: голосов - 549, средняя оценка - 4.82
844 / 739 / 342
Регистрация: 22.09.2012
Сообщений: 5,034

События по таймеру

27.11.2015, 16:15. Показов 104108. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как в Unity выполнять дейстивие напрмер раз в секунду?
Ну для простого примера раз в секунду выводить сообщение в консоль?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.11.2015, 16:15
Ответы с готовыми решениями:

События по таймеру
Добрый день. Есть форма, на ней 3 контрола, у каждого из контролов свой таймер System.Windows.Forms.Timer, так вот события по этим таймерам...

События из базы pg по таймеру
Добрый день. Я из базы подтягиваю значения тревоги.Повышенная,Высокая,Средняя.Данные о времени начала и окончания тревоги берутся из бд...

События по таймеру (в консоли)
Как в консоли можно сделать что бы какой-то участок кода выполнялся через каждые n секунд, так, что бы программа завершала выполнение этого...

15
36 / 11 / 1
Регистрация: 14.09.2015
Сообщений: 60
27.11.2015, 19:55
http://free-tutorials.org/unit... -tutorial/
1
844 / 739 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
30.11.2015, 00:08  [ТС]
Malkkiri,
Работает, но как таймер обратного отсчета, на игру на время пригодится.
Аесть код выполнять действие раз в 5 секунд например?
0
9036 / 2937 / 493
Регистрация: 05.10.2013
Сообщений: 7,960
Записей в блоге: 216
30.11.2015, 00:43
Цитата Сообщение от NIKOLAYY Посмотреть сообщение
Аесть код выполнять действие раз в 5 секунд например?
Вариант 1. InvokeRepeating:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
using UnityEngine;
 
public class Timer : MonoBehaviour
{
    void Start ()
    {
        InvokeRepeating("Message", 0, 5);
    }
    
    void Message()
    {
        Debug.Log("Hello");
    }
}


Вариант 2. Coroutines:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
using System.Collections;
using UnityEngine;
 
public class Timer : MonoBehaviour
{
    void Start()
    {
        StartCoroutine("DoMessage");
    }
 
    IEnumerator DoMessage()
    {
        for (; ; )
        {
            Message();
            yield return new WaitForSeconds(5f);
        }
    }
 
    void Message()
    {
        Debug.Log("Hello");
    }
}
5
36 / 11 / 1
Регистрация: 14.09.2015
Сообщений: 60
30.11.2015, 14:38
у тебя есть таймер. Заведи переменную, присвой ей нужное тебе время (float updateTime =5f во время апдейта отнимаешь дельта тайм (updateTime -= Time.deltaTime проверяешь, если время меньше чем 0 , то выполняешь нужное тебе действие и снова (updateTime =5).

НО ! такой подход работает если тебе не нужна абсолютная точность. Для игр этого вполне хватает
0
844 / 739 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
04.12.2015, 02:18  [ТС]
8Observer8,
Работает, взял на заметку, а что значит 0 в этой строке ("Message", 0, 5)?

Malkkiri,
Абсолютная точность ненужна конечно в игре зачем она, главное экономия памяти.
А чем updateTime отличается от Time.deltaTime?

У меня еще была самая первая идея вот тут переменную складывать, где кадры считаются но это довольно глупая и неточная идея верно ведь? Ни кто незнает сколько кадров прокрутится за секунду. Да и это слишком бы расходовало память верно?

C++
1
2
3
 void Update () {
 a = a + b;
 {
0
9036 / 2937 / 493
Регистрация: 05.10.2013
Сообщений: 7,960
Записей в блоге: 216
04.12.2015, 09:21
Цитата Сообщение от NIKOLAYY Посмотреть сообщение
Работает, взял на заметку, а что значит 0 в этой строке ("Message", 0, 5)?
InvokeRepeating
public void InvokeRepeating(string methodName, float time, float repeatRate);
Invokes the method methodName in time seconds, then repeatedly every repeatRate seconds.
time - количество секунд, которое должно пройти до начала первого вызова "Message". То есть если поставить ("Message", 3, 5), то метод "Message" вызовется через 3 секунды, а далее будет вызываться каждые 5 секунд.
2
3 / 3 / 0
Регистрация: 02.12.2015
Сообщений: 25
18.12.2015, 14:45
Как-то так:
C#
1
2
3
4
5
6
7
8
public int time; /*Число например 10 сек */
 
time - Time.deltaTime;/*Вычитаем из 10 по секунде*/
if(time = 0)/*Время вышло пишем*/
{
Degug.Log("Прошло 10 сек!");
}
a = 10;/*запускает опять таймер на 10,чтобы повторялось бесконечно*/
Это просто быстро и понятно!Для изменения времени достаточно поменять переменную.
Кстати ещё экономит ОП.
0
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
18.12.2015, 21:33
Так правильней будет:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public float repeat_time; /* Время в секундах */ 
private float curr_time;
void Start()
{
curr_time = repeat_time * 1000f;
}
void Update()
{
curr_time -= Time.deltaTime; /* Вычитаем из 10 время кадра (оно в миллисекундах) */ 
if(curr_time <= 0) /* Время вышло пишем */ 
 { 
 Degug.Log("Прошло 10 сек!"); 
 curr_time = repeat_time * 1000f; /* запускает опять таймер на 10,чтобы повторялось бесконечно */
 }
1
3 / 3 / 0
Регистрация: 02.12.2015
Сообщений: 25
19.12.2015, 12:29
Да,у него лучше.У меня самый основной такой принцип.
0
844 / 739 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
19.12.2015, 15:59  [ТС]
В делфи например тик таймера составляет 1 тысячная секунды, а чему вектор дельты Time.deltaTime равен в юнити немогу понять?
Одна сотая секунды что ли?
0
9036 / 2937 / 493
Регистрация: 05.10.2013
Сообщений: 7,960
Записей в блоге: 216
19.12.2015, 16:08
Цитата Сообщение от NIKOLAYY Посмотреть сообщение
а чему вектор дельты Time.deltaTime равен в юнити немогу понять?
Time.deltaTime - это число, и равно оно количеству секунд, которое потребовалось на отрисовку предыдущего кадра.
0
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
19.12.2015, 16:12
NIKOLAYY, в дельфи же тик от 50 мс начинается?
8Observer8, разве не в мс измеряется?
0
9036 / 2937 / 493
Регистрация: 05.10.2013
Сообщений: 7,960
Записей в блоге: 216
19.12.2015, 16:19
Цитата Сообщение от Cr0c Посмотреть сообщение
разве не в мс измеряется?
Нет, в секундах.
0
844 / 739 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
19.12.2015, 16:39  [ТС]
На скрине вот так отработал такой скрипт:

C#
1
2
3
4
5
6
7
8
9
10
using UnityEngine;
using System.Collections;
 
public class TimerScript : MonoBehaviour {
    private int kadr; 
    void Update () {
        kadr = kadr + 1;
        Debug.Log ("кадр = " + kadr + ", время кадра = " + Time.deltaTime);
    }
}
Нет не 50 мс, в делфи 1 тысчная секунды таймер равен.
На скрине смотри в инспекторе настройки по умолчанию.

Но я на делфи устанавливать таймер в промежуток 0,001 ни кому не советую!
Система все равно будет неуспевать под эту скорость какие либо данные обрабатывать, ну минимум как бы 4 сотых, ну 25 тысячных это уже край если сильно нужно.
Миниатюры
События по таймеру   События по таймеру  
0
5 / 5 / 0
Регистрация: 06.02.2018
Сообщений: 95
24.10.2019, 17:35
ну как простой вариант своего таймера могу предложить
public float i;

i=i+1*Time.deltaTime;
print(i);

каждую секунду i+1
делаешь условие и все прекрасно)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.10.2019, 17:35
Помогаю со студенческими работами здесь

Вызов процедуры по таймеру. (Через н-ное время, после какого-то события)
Народ, привет! На форме есть текстбокс, при вводе символов, в который меняется Recordset для ListBox'a ну и соответственно в ListBox...

Как вызвать один обработчик события в другом обработчике события?
Здравствуйте. Подскажите пожалуйста, каким образом можно вызвать информацию из одного обработчика события в другой обработчик события? ...

Как в одном обработчике события запустить другой обработчик события
Есть список listView1, который заполняется из массива PeopleListprivate void listView1_RetrieveVirtualItem(object sender,...

Использовать обработку события по изменению данных DataGridView в обработке события сторонней кнопки
Имеется некий DataGridView, при изменении данных в определенной ячейке которого создается определенное действие, описанное в обработчике...

Почему если делегат события определен в другом классе, то не получается создать генерацию события?
В проекте №1 объявлен делегат для события: delegate void StateEventHandler(State state); А в своем проекте №2 я в классе создаю событие...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru