计时器加(延时委托)
来源:互联网 发布:.io域名 编辑:程序博客网 时间:2024/05/21 15:05
using UnityEngine;using System.Collections.Generic;public class TimerManager : Singleton<TimerManager> { //计时器表 private List<Timer> _list = new List<Timer>(); //添加计时器--单次 public Timer Add(float _delayTime,DelayDelegate _function) { Timer timer = new Timer(_delayTime, _function); _list.Add(timer); return timer; } //添加计时器--多次 public Timer Add(float _delayTime, DelayDelegate _function, int _targetInvokeTime) { Timer timer = new Timer(_delayTime, _function, _targetInvokeTime); _list.Add(timer); return timer; }//添加计时器--循环 public void Add(float _delayTime, DelayDelegate _function, bool _isLoop) { Timer timer = new Timer(_delayTime, _function, _isLoop); _list.Add(timer); } //移除计时器 public void Remove(Timer timer) { _list.Remove(timer); } //计时器更新 public void Update(float dt) { for (int i = 0; i < _list.Count; i++) { Timer timer = _list[i]; timer.Update(dt); if (timer.IsDone) { _list.Remove(timer); } } } //获取一个计时器 public Timer Get(Timer timer) { if (_list.Contains(timer)) { return timer; } return null; } //清除 public void Clear() { _list.Clear(); }} //延时委托public delegate void DelayDelegate();/// <summary>/// 计时类/// </summary>public class Timer{ private float _delayTime; private DelayDelegate _function; private float _usedTime; private bool _isDone = false; public bool IsDone { get { return _isDone; } } private int _targetInvokeTime; private int _useInvokeTime; private bool _isLoop = false; public Timer(float _delayTime, DelayDelegate _function) { this._delayTime = _delayTime; this._function = _function; } /// <summary> /// 多次延迟调用 /// </summary> /// <param name="_delayTime"></param> /// <param name="_function"></param> /// <param name="_targetInvokeTime"></param> public Timer(float _delayTime, DelayDelegate _function, int _targetInvokeTime) { this._delayTime = _delayTime; this._function = _function; this._targetInvokeTime = _targetInvokeTime; } /// <summary> /// 循环调用 /// </summary> /// <param name="_delayTime"></param> /// <param name="_function"></param> public Timer(float _delayTime, DelayDelegate _function, bool _isLoop) { this._delayTime = _delayTime; this._function = _function; this._isLoop = _isLoop; } public void Update(float dt) { _usedTime += dt; if (_usedTime >= _delayTime && _isDone == false) { _function(); if (_isLoop == false) { _useInvokeTime++; if (_targetInvokeTime == 0 || _useInvokeTime == _targetInvokeTime) { _isDone = true; } } _usedTime = _usedTime - _delayTime; } }}
阅读全文
0 0
- 计时器加(延时委托)
- 计时器 (测试for延时)
- android计时器延时启动活动
- Thread 中加延时
- 滑动门效果 (函数立即调用的试用方法)(使用计时器延时执行)
- STM32 使用通用计时器实现微秒延时
- STM32 使用通用计时器实现微秒延时
- STM32 使用通用计时器实现微秒延时
- Android计时器加弱引用
- 【Cocos2dx】计时器的使用,计时器的嵌套,与在计时器中延时执行一段代码
- 一个关于委托事件的例子(计时器)
- 加计时器的网络获取工具类
- 两个定时器/计时器配合使用实现500MS的延时
- 委托加事件:关联选单
- linux kernel 加延时的方法分析
- U3D 计时器 Invoke() 方法是 Unity3D 的一种委托机制
- Swift coreAnimation 加计时器写的游戏《飞机大战》
- 计时器(timer)
- 第3章 内存管理
- IntelliJ IDEA破解和汉化
- 学长教你装系统(一) 启动U盘的制作
- CNN网络学习:VGG 以及Tensorflow实现
- HashMap源码分析 JDK1.8
- 计时器加(延时委托)
- Linux笔记:守护进程
- centos7安装apache http server启动失败
- HTML5头部为什么只需要写<!DOCTYPE HTML>?
- jzoj5433 【NOIP2017提高A组集训10.28】图
- sdnu1219.sign up problem
- Servlet异步处理
- 时间复杂度学习记录
- linux中自动安装虚拟机