Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как создать таймер в C#?Работаю на Unity 2022. Visual Studio 2022

BarKode Ученик (53), на голосовании 2 месяца назад
Короче, мне надо чтоб один скрипт начал выполняться по определённого времени. Как это написать в скрипте и как ещё сделать раз в какое в время?
? И надо ли создавать отдельный скрипт для этого?
Голосование за лучший ответ
Teslak Гуру (3245) 3 месяца назад
Использование Coroutine:
 using UnityEngine; 
using System.Collections;

public class TimerExample : MonoBehaviour
{
void Start()
{
// Запускаем корутину, которая выполнится через 5 секунд
StartCoroutine(DelayedFunction(5f));

// Запускаем корутину, которая будет выполняться каждые 2 секунды
StartCoroutine(RepeatingFunction(2f));
}

IEnumerator DelayedFunction(float delayTime)
{
yield return new WaitForSeconds(delayTime);
Debug.Log("Это выполнилось через " + delayTime + " секунд");
}

IEnumerator RepeatingFunction(float repeatTime)
{
while (true)
{
yield return new WaitForSeconds(repeatTime);
Debug.Log("Это выполняется каждые " + repeatTime + " секунд");
}
}
}

Альтернатива в виде Invoke и InvokeRepeating:
 using UnityEngine; 

public class InvokeExample : MonoBehaviour
{
void Start()
{
// Вызовет функцию DelayedFunction через 5 секунд
Invoke("DelayedFunction", 5f);

// Вызывает RepeatingFunction каждые 2 секунды, начиная с задержки в 1 секунду
InvokeRepeating("RepeatingFunction", 1f, 2f);
}

void DelayedFunction()
{
Debug.Log("Это выполнилось через 5 секунд");
}

void RepeatingFunction()
{
Debug.Log("Это выполняется каждые 2 секунды");
}
}
Time.time:
 using UnityEngine; 

public class TimeExample : MonoBehaviour
{
private float nextActionTime = 0f;
public float period = 2f;

void Update()
{
if (Time.time > nextActionTime)
{
nextActionTime = Time.time + period;
// Выполняем действие здесь
Debug.Log("Прошло " + period + " секунд");
}
}
}
Создание отдельного скрипта для таймера зависит от структуры проекта. Если таймер используется в разных местах, создай отдельный скрипт. Если это часть логики объекта, добавь его в скрипт объекта.

Выбери метод в зависимости от задачи: для простого отложенного выполнения используй Invoke, для более сложного контроля — Coroutine.
BarKodeУченик (53) 3 месяца назад
Спасибо большое
Похожие вопросы