Unity静态TimerManager创建(自动刷新)
ECNU-ICALK2026-10-26查看 1759复制 957
为Unity开发静态类TimerManager,自动初始化更新循环,支持REPEAT标志和before参数以限制计时器的生命周期。
📘如何使用这个技能
- 1复制技能内容·点击上方「Copy SKILL.md」复制全部内容,或 Download 下载到本地
- 2打开你的 AI 客户端·支持 Claude Code、Trae、Cursor、ChatGPT、DeepSeek、Kimi 等任意 AI 助手
- 3粘贴为系统提示/知识文件·Claude Code:放入 .claude/skills/ 目录;普通对话:作为首条消息发送并说「请严格按这份技能文档执行」
- 4直接提出你的需求·AI 会按技能定义的工作流、格式和约束来处理,无需再解释背景
💡 提示:技能生效后,每次对话只需一句需求,AI 会按 SKILL.md 的流程执行。
SKILL.md2718 chars
--- 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 флагом