Функция в Unity наподобие SetInterval из JavaScript

172
30 января 2022, 02:10

Нужно вызывать функцию каждый определённый n-ый промежуток времени.

Например: если n == 0.5, то вызывается func1() каждые 0.5с (пол секунды).

Как это сделать легко и просто? Например в JS есть функция SetInterval, Есть ли в C# Unity что-то наподобие?

Answer 1

Вариант через Time.deltaTime.

float DelayTimer = 0;
float Delay = 0.5f;
void Update () {
     DelayTimer += Time.deltaTime;
     if (DelayTimer >= Delay) {
         DelayTimer -= Delay;
         GetOverHere();
     }
}
Answer 2

В Unity есть StartCoroutine.

Создайте свой метод:

private IEnumerator Func1() {
    // бесконечный цикл
    for (;;) {
        yield return new WaitForSeconds(0.5f);
        // этот код будет выполняться каждые полсекунды
        // а здесь какое-то условие для выхода из цикла
    }
}

И запустите в вашем MonoBehaviour скрипте с помощью StartCoroutine:

StartCoroutine(Func1());

Func1 будет выполняться каждые полсекунды.

READ ALSO
Поиск данных через RowFilter в dataGridView по всем столбцам

Поиск данных через RowFilter в dataGridView по всем столбцам

Есть таблица authors со столбцами fio, count, urlВсе данные загружаются в datagridview (столбец с ID тоже, но он не отображается на форме)

106
Ошибка авторизации

Ошибка авторизации

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

123
Массив PointF в массиве PointF C#

Массив PointF в массиве PointF C#

Такая задача, нужно вычислить точки 6 треугольников, которые находятся на круге и записать их в массив которые хранит координаты каждого...

75
Как вызвать метод, при изменении значения переменной

Как вызвать метод, при изменении значения переменной

Мне нужно вызывать метод, при изменении значения какой либо переменнойЯ знаю самый простой способ - через property

108