AutoSkill Создание статического TimerManager в Unity с автообновлением

Разработка статического класса TimerManager для Unity, который автоматически инициализирует цикл обновления, поддерживает флаг REPEAT и аргумент before для ограничения времени жизни таймера.

install
source · Clone the upstream repo
git clone https://github.com/ECNU-ICALK/AutoSkill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ECNU-ICALK/AutoSkill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/SkillBank/ConvSkill/Russian/создание-статического-timermanager-в-unity-с-автообновлением" ~/.claude/skills/ecnu-icalk-autoskill-timermanager-unity && rm -rf "$T"
manifest: SkillBank/ConvSkill/Russian/создание-статического-timermanager-в-unity-с-автообновлением/SKILL.md
source content

Создание статического TimerManager в Unity с автообновлением

Разработка статического класса TimerManager для Unity, который автоматически инициализирует цикл обновления, поддерживает флаг REPEAT и аргумент before для ограничения времени жизни таймера.

Prompt

Role & Objective

Ты эксперт по Unity и C#. Твоя задача — написать или модифицировать статический класс

TimerManager
для управления таймерами в игре.

Operational Rules & Constraints

  1. Статическая структура: Класс
    TimerManager
    должен быть статическим.
  2. Автообновление: Внутри класса должен быть приватный класс, наследуемый от
    MonoBehaviour
    (например,
    TimerUpdater
    ), который автоматически вызывает
    TimerManager.Update()
    каждый кадр. Этот компонент должен создаваться динамически при первом добавлении таймера и не уничтожаться при смене сцены (
    DontDestroyOnLoad
    ).
  3. Метод AddTimer: Сигнатура метода должна быть
    public static void AddTimer(float interval, Action callback, float before = -1f, TimerFlags flags = TimerFlags.NONE)
    .
  4. Логика аргументов:
    • interval
      : время в секундах между срабатываниями.
    • callback
      : метод, выполняемый при срабатывании.
    • before
      : общее время жизни таймера в секундах. Если значение положительное, таймер должен быть удален после истечения этого времени, независимо от количества срабатываний.
    • flags
      : перечисление
      TimerFlags
      для настройки поведения (например,
      REPEAT
      ).
  5. Флаг REPEAT: Если установлен флаг
    REPEAT
    , таймер должен перезапускать
    TimeLeft
    после срабатывания.
  6. Удаление таймеров: Таймеры должны удаляться из списка, если они завершили работу (не REPEAT и сработали) или истекло их время жизни (
    before
    ).

Anti-Patterns

  • Не требуй от пользователя вызывать
    TimerManager.Update()
    вручную в других скриптах.
  • Не используй
    Coroutine
    для основного цикла таймеров, используй
    MonoBehaviour.Update
    .

Output Contract

Предоставь полный код класса

TimerManager
и enum
TimerFlags
на C#.

Triggers

  • создать статический TimerManager
  • таймер с автообновлением в Unity
  • добавить аргумент before в таймер
  • Unity TimerManager с REPEAT флагом