reckfellENGINE

Timer

Entity-таймер с Timeout и настройками повторения и обработки.

На этой странице
class TimerReckfellSharpНаследует Entity

Timer является Entity: добавьте его в активное дерево и запустите Start либо настройте Autostart. OneShot определяет одно срабатывание или повторение. Подписывайтесь на Timeout до запуска, если важен первый сигнал.

ProcessMode определяет поведение при паузе дерева, Paused относится к самому таймеру. IgnoreTimeScale не отменяет условия обработки при паузе. Для одноразового ожидания без отдельной Entity существует EntityTree.CreateTimer с другим значением по умолчанию: processAlways = true.

Практическое руководство.

Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.

Конструкторы1

TimerКонструктор
# Timer
C#
public Timer();

Создаёт остановленную Timer Entity вне дерева. По умолчанию WaitTime = 1 секунда, ProcessCallback = Idle; Autostart, OneShot, Paused и IgnoreTimeScale выключены. Добавьте её в активное дерево перед Start.

Свойства7

AutostartСвойство
# Autostart
C#
public bool Autostart { get; set; }

При Ready запускает таймер автоматически и сбрасывается в false. Это не команда немедленного запуска уже готового объекта: для него используйте Start. Для редактируемого документа в редакторе автозапуск подавляется.

IgnoreTimeScaleСвойство
# IgnoreTimeScale
C#
public bool IgnoreTimeScale { get; set; }

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

OneShotСвойство
# OneShot
C#
public bool OneShot { get; set; }

Если true, автоматическое истечение останавливает отсчёт перед Timeout. Если false, после истечения добавляется WaitTime и отсчёт продолжается. Таймер остаётся Entity дерева; режим не удаляет его.

PausedСвойство
# Paused
C#
public bool Paused { get; set; }

Приостанавливает этот Timer, не всё EntityTree. Условия ProcessMode дерева остаются отдельными.

ProcessCallbackСвойство
# ProcessCallback
C#
public Timer.TimerProcessCallback ProcessCallback { get; set; }

Выбирает фазу обновления: Idle — процессные кадры, Physics — физические такты. Не задаёт отдельный поток и не обходит Paused или условия ProcessMode.

TimeLeftСвойство
# TimeLeft
C#
public double TimeLeft { get; }

Оставшийся отсчёт в секундах, ограниченный снизу нулём; свойство только для чтения. У остановленного таймера равно 0, у приостановленного сохраняется. Нулевой результат сам по себе не означает, что Entity удалена.

WaitTimeСвойство
# WaitTime
C#
public double WaitTime { get; set; }

Интервал в секундах. Задавайте конечное положительное число; значение <= 0 вызывает native-ошибку и сохраняет прежний интервал, а не гарантированное исключение CLR. Изменение свойства само не запускает таймер и не сбрасывает оставшееся время. Очень короткие интервалы зависят от частоты выбранной фазы; это не высокоточный отдельный системный таймер.

Методы16

GetTimeLeftdouble
# GetTimeLeft
C#
public double GetTimeLeft();

Возвращает TimeLeft без изменения состояния таймера. Подробности — в описании свойства.

Возвращает double

Остаток в секундах, не меньше 0.

GetTimerProcessCallbackTimer.TimerProcessCallback
# GetTimerProcessCallback
C#
public Timer.TimerProcessCallback GetTimerProcessCallback();

Возвращает ProcessCallback без изменения состояния таймера. Подробности — в описании свойства.

Возвращает Timer.TimerProcessCallback

Выбранная фаза Idle или Physics.

GetWaitTimedouble
# GetWaitTime
C#
public double GetWaitTime();

Возвращает WaitTime без изменения состояния таймера. Подробности — в описании свойства.

Возвращает double

Настроенный интервал в секундах, не текущий остаток.

HasAutostartbool
# HasAutostart
C#
public bool HasAutostart();

Возвращает Autostart без изменения состояния таймера. Подробности — в описании свойства.

Возвращает bool

Текущее значение Autostart; после автоматического запуска сбрасывается.

IsIgnoringTimeScalebool
# IsIgnoringTimeScale
C#
public bool IsIgnoringTimeScale();

Возвращает IgnoreTimeScale без изменения состояния таймера. Подробности — в описании свойства.

Возвращает bool

true при выборе немасштабированного времени; иначе false.

IsOneShotbool
# IsOneShot
C#
public bool IsOneShot();

Возвращает OneShot без изменения состояния таймера. Подробности — в описании свойства.

Возвращает bool

true при OneShot; иначе false.

IsPausedbool
# IsPaused
C#
public bool IsPaused();

Возвращает Paused без изменения состояния таймера. Подробности — в описании свойства.

Возвращает bool

true при локальной паузе этого таймера; это не состояние паузы всего дерева.

IsStoppedbool
# IsStopped
C#
public bool IsStopped();

Проверяет GetTimeLeft() <= 0. У нового или остановленного таймера возвращает true; пауза с положительным остатком не считается остановкой. При отставании повторяющегося таймера остаток тоже может быть 0: метод не проверяет флаг обработки или существование Entity.

Возвращает bool

true при нулевом видимом остатке; иначе false.

SetAutostartvoid
# SetAutostart
C#
public void SetAutostart(bool enable);

Устанавливает Autostart с теми же правилами, что и свойство. Это не отдельный способ запуска таймера.

Параметры
ИмяТипПо умолчанию
enablebool—
enable

Разрешить автоматический запуск при Ready.

SetIgnoreTimeScalevoid
# SetIgnoreTimeScale
C#
public void SetIgnoreTimeScale(bool ignore);

Устанавливает IgnoreTimeScale с теми же правилами, что и свойство. Это не отдельный способ запуска таймера.

Параметры
ИмяТипПо умолчанию
ignorebool—
ignore

Выбирать немасштабированное время, не обходя условия паузы.

SetOneShotvoid
# SetOneShot
C#
public void SetOneShot(bool enable);

Устанавливает OneShot с теми же правилами, что и свойство. Это не отдельный способ запуска таймера.

Параметры
ИмяТипПо умолчанию
enablebool—
enable

Остановиться после одного истечения, не удаляя Entity.

SetPausedvoid
# SetPaused
C#
public void SetPaused(bool paused);

Устанавливает Paused с теми же правилами, что и свойство. Это не отдельный способ запуска таймера.

Параметры
ИмяТипПо умолчанию
pausedbool—
paused

Локальная пауза таймера; оставшееся время сохраняется.

SetTimerProcessCallbackvoid
# SetTimerProcessCallback
C#
public void SetTimerProcessCallback(Timer.TimerProcessCallback callback);

Устанавливает ProcessCallback с теми же правилами, что и свойство. Это не отдельный способ запуска таймера.

Параметры
ИмяТипПо умолчанию
callbackTimer.TimerProcessCallback—
callback

Допустимая фаза Idle или Physics.

SetWaitTimevoid
# SetWaitTime
C#
public void SetWaitTime(double timeSec);

Устанавливает WaitTime с теми же правилами, что и свойство. Это не отдельный способ запуска таймера.

Параметры
ИмяТипПо умолчанию
timeSecdouble—
timeSec

Конечный положительный интервал в секундах. Сам отсчёт не перезапускается.

Startvoid
# Start
C#
public void Start(double timeSec = -1d);

Запускает или сбрасывает отсчёт в активном дереве. Положительный timeSec сначала заменяет WaitTime; 0 и отрицательное значение используют прежний интервал. Не снимает Paused. Вызов вне дерева сообщает native-ошибку; не рассчитывайте на исключение CLR.

Полный пример проверяет входные данные и подписывается до запуска. Вернувшийся Timer остаётся дочерним объектом parent после истечения. Для его отмены вызовите Stop; для удаления — QueueFree, когда объект больше не нужен.

C#
using System;
using Reckfell;

public static class TimerExample
{
    // The returned Timer remains a child of parent after its one timeout.
    public static Timer StartOnce(Entity parent, double seconds, Action onTimeout)
    {
        ArgumentNullException.ThrowIfNull(parent);
        ArgumentNullException.ThrowIfNull(onTimeout);
        if (!parent.IsInsideTree())
            throw new ArgumentException("Parent must be inside the active tree.", nameof(parent));
        if (!double.IsFinite(seconds) || seconds <= 0)
            throw new ArgumentOutOfRangeException(nameof(seconds));
        var timer = new Timer { OneShot = true };
        parent.AddChild(timer);
        timer.Timeout += onTimeout;
        timer.Start(seconds);
        return timer;
    }
}
Параметры
ИмяТипПо умолчанию
timeSecdouble-1d
timeSec

Новый конечный положительный интервал или значение <= 0 для использования WaitTime. По умолчанию -1.

Stopvoid
# Stop
C#
public void Stop();

Останавливает обработку, обнуляет видимый TimeLeft и сбрасывает Autostart. Не испускает Timeout и не удаляет Entity. Допустим вне дерева. Ожидание Timeout через await не становится автоматически отменённым или завершённым.

Сигналы и события1

TimeoutСобытие
# Timeout
C#
public event Action Timeout;

Сигнал автоматического истечения отсчёта без аргументов. Подписывайтесь до Start. При OneShot таймер к этому моменту остановлен; при повторении продолжает работу. Stop сам сигнал не испускает.

Timer.TimerProcessCallback

ЗначениеОписание
Idle = 1

Обновление в процессных кадрах; значение по умолчанию.

Physics = 0

Обновление в физических тактах.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.