создание статического Timermanager в Unity с автообновлением
ASecurity
Разработка статического класса TimerManager для Unity, который автоматически инициализирует цикл обновления, поддерживает флаг REPEAT и аргумент before для ограничения времени жизни таймера.
Installs into .claude/skills of the current project.
Are you the author of создание статического Timermanager в Unity с автообновлением?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/david-li0406-timermanager-unity)
---
id: "3508b512-d52e-4a5e-bcba-4ad07606c2f8"
name: "Создание статического TimerManager в Unity с автообновлением"
description: "Разработка статического класса TimerManager для Unity, который автоматически инициализирует цикл обновления, поддерживает флаг REPEAT и аргумент before для ограничения времени жизни таймера."
version: "0.1.0"
tags:
- "Unity"
- "C#"
- "Timer"
- "Static Class"
- "GameDev"
triggers:
- "создать статический TimerManager"
- "таймер с автообновлением в Unity"
- "добавить аргумент before в таймер"
- "Unity TimerManager с REPEAT флагом"
---
# Создание статического 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 флагом