博客迁移
个人博客站点,欢迎访问,www.jiingfengji.tech
正文
有时候我们会有这样的需求:几秒或者几帧之后做什么事,也就是一个定时器。这里我利用Time.realtimeSinceStartup实现了一个简单的秒钟定时器,当然还可以利用Time.frameCount实现一个帧计时器
上代码:
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Timer
{
private Timer()
{
m_timerTask = new List<TimerTask>();
}
private static Timer m_instance;
public static Timer Instance
{
get
{
if (m_instance == null)
{
m_instance = new Timer();
}
return m_instance;
}
}
public delegate void OnTimeStart();
private List<TimerTask> m_timerTask = null;
public class TimerTask
{
//public int Id;
public float RealTime;
public float Time;
//public bool IsLoop;
//public int LoopCount;
public OnTimeStart CallBack;
}
public void UpdateTimer()
{
for (int i = 0; i < m_timerTask.Count; i++)
{
TimerTask t = m_timerTask[i];
if (t == null)
{
continue;
}
if (t.RealTime < Time.realtimeSinceStartup)
{
if (null != t.CallBack)
{
t.CallBack();
m_timerTask.Remove(t);
}
}
}
}
public void AddTimerTask(float time, OnTimeStart callback)
{
if (null == callback)
{
return;
}
TimerTask t = new TimerTask();
t.Time = time;
t.RealTime = Time.realtimeSinceStartup + time;
t.CallBack = callback;
m_timerTask.Add(t);
}
}
上面的代码省略了是否循环、循环次数以及帧计时器,思路类似。
最后附上测试Demo下载地址:
链接:http://pan.baidu.com/s/1bp5xRSr 密码:y35i
下载链接如有失效,请即时联系
以上知识分享,如有错误,欢迎指出,共同学习,共同进步