using UnityEngine;
using System.Collections;
public class Timer : MonoBehaviour
{
public float duration = 1.0f; // 定时器持续时间
public bool isLooping = false; // 是否循环
public bool isPaused = false; // 是否暂停计时器
private float currentDuration = 0.0f; // 当前持续时间
// 定时器结束事件
public delegate void OnTimerFinishedDelegate();
public event OnTimerFinishedDelegate OnTimerFinished;
// 每帧更新计时器
void Update()
{
if (isPaused) return;
currentDuration += Time.deltaTime;
if (currentDuration >= duration)
{
if (OnTimerFinished != null) OnTimerFinished();
if (isLooping) currentDuration -= duration;
else enabled = false;
}
}
// 重置计时器
public void ResetTimer()
{
currentDuration = 0.0f;
enabled = true;
}
// 暂停计时器
public void PauseTimer()
{
isPaused = true;
}
// 继续计时器
public void ResumeTimer()
{
isPaused = false;
}
}
这个计时器包含了以下基本功能:
- 可以设置定时器的持续时间、是否循环和是否暂停;
- 可以在计时器结束时触发事件;
- 可以重置、暂停和继续计时器。
你可以在需要使用计时器的脚本中添加Timer
组件,然后访问组件并调用函数来控制计时器的行为。例如,在Start()
函数中初始化计时器:
private Timer timer;
void Start()
{
timer = gameObject.AddComponent<Timer>();
timer.duration = 5.0f;
timer.OnTimerFinished += OnTimerFinishedHandler;
}
// 计时器结束事件处理函数
void OnTimerFinishedHandler()
{
Debug.Log("计时器结束了!");
}
然后,你可以在需要的时候调用计时器的函数来控制计时器的运行:
timer.ResetTimer(); // 重置计时器
timer.PauseTimer(); // 暂停计时器
timer.ResumeTimer(); // 继续计时器