Unity静态TimerManager创建(自动刷新)

ECNU-ICALK2026-10-26查看 1759复制 957

为Unity开发静态类TimerManager,自动初始化更新循环,支持REPEAT标志和before参数以限制计时器的生命周期。

Download (.md)

📘如何使用这个技能

  1. 1
    复制技能内容·点击上方「Copy SKILL.md」复制全部内容,或 Download 下载到本地
  2. 2
    打开你的 AI 客户端·支持 Claude Code、Trae、Cursor、ChatGPT、DeepSeek、Kimi 等任意 AI 助手
  3. 3
    粘贴为系统提示/知识文件·Claude Code:放入 .claude/skills/ 目录;普通对话:作为首条消息发送并说「请严格按这份技能文档执行」
  4. 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 флагом
来源:skillsdirectory

评论0

登录后参与评论

还没有评论,来抢沙发吧