Unity之简易定时器Timer

xiaoxiao2021-02-28  89

博客迁移

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

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

转载请注明原文地址: https://www.6miu.com/read-59959.html

最新回复(0)