Unity之简易定时器Timer

来源:互联网 发布:三千元手机推荐知乎 编辑:程序博客网 时间:2024/06/07 16:05

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

下载链接如有失效,请即时联系
以上知识分享,如有错误,欢迎指出,共同学习,共同进步