您的位置:首页 > 移动开发 > Unity3D

Unity之简易定时器Timer

2017-08-06 19:08 309 查看
有时候我们会有这样的需求:几秒或者几帧之后做什么事,也就是一个定时器。这里我利用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

下载链接如有失效,请即时联系

以上知识分享,如有错误,欢迎指出,共同学习,共同进步
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: