Unity之简易定时器Timer

博客迁移

个人博客站点,欢迎访问,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

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值