昨天写了一天项目规划书,到晚上实在不想写了,就想写几行代码。一时也不知道要写个什么东西,望了一眼办公室的挂钟,那就写个计时器吧,以后肯定也用得到。代码很简单,哈哈,大神勿见笑!
下面上代码:
using UnityEngine;
/// <summary>
/// 计时器
/// </summary>
public class TimerC
{
/// <summary>
/// 计时器最近一次暂停时的累计时间
/// </summary>
private float cumulativeTime;
/// <summary>
/// 计时器状态(是否处于暂停状态)
/// </summary>
bool isPaused = true;
/// <summary>
/// 计时器状态(是否处于暂停状态)
/// </summary>
public bool IsPaused { get { return isPaused; } }//供外部查看计时器状态
/// <summary>
/// 计时器每次开始时的时刻
/// </summary>
float startTime;
/// <summary>
/// 计时器每次暂停时的时刻
/// </summary>
float pausedTime;
/// <summary>
/// 计时器的累计计时时间
/// </summary>
public float TimeOfTimer
{
get
{
if (!isPaused) return Time.fixedTime-startTime+cumulativeTime;
else return cumulativeTime;
}
}
public TimerC()
{
cumulativeTime = 0;
startTime = 0;
pausedTime = 0;
}
/// <summary>
/// 开始计时
/// </summary>
public void Start()
{
if (!isPaused) return;
isPaused = false;
startTime = Time.fixedTime;
}
/// <summary>
/// 暂停计时
/// </summary>
public void Pause()
{
if (isPaused) return;
isPaused = true;
pausedTime = Time.fixedTime;
cumulativeTime += pausedTime - startTime;
}
}
接着是简易测试代码:
using UnityEngine;
using System.Collections;
using HMLTools;
using System;
public class Test : MonoBehaviour {
TimerC t;
void Start () {
t = new TimerC();
}
// Update is called once per frame
void Update () {
if (Input.GetKeyDown(KeyCode.S))
{
t.Start();
}
else if (Input.GetKeyDown(KeyCode.P))
{
t.Pause();
}
Debug.Log(t.TimeOfTimer);
}
}