Unity计时器
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(); // 继续计时器