[Unity3D]计时器/Timer
原地址:http://blog.sina.com.cn/s/blog_5b6cb9500101aejs.html
https://github.com/xuzhiping7/Unity3d-Timer
项目中管理计时器太混乱难看了,用好听点的话来说就是代码不优雅。
//Coded by ZhipingXu xuzhiping7@qq.com
//Too simple, so I do not need to explain, just see the code. Help yourself. public class Timer{ //If the Timer is running
private bool b_Tricking; //Current time
private float f_CurTime; //Time to reach
private float f_TriggerTime; //Use delegate to hold the methods
public delegate void EventHandler(); //The trigger event list
public event EventHandler tick; /// <summary>
/// Init
/// </summary>
/// <param name="second">Trigger Time</param>
public Timer(float second)
{
f_CurTime = 0.0f;
f_TriggerTime = second;
} /// <summary>
/// Start Timer
/// </summary>
public void Start()
{
b_Tricking = true;
} /// <summary>
/// Update Time
/// </summary>
public void Update(float deltaTime)
{
if (b_Tricking)
{
f_CurTime += deltaTime; if (f_CurTime > f_TriggerTime)
{
//b_Tricking must set false before tick() , cause if u want to restart in the tick() , b_Tricking would be reset to fasle .
b_Tricking = false;
tick();
}
}
} /// <summary>
/// Stop the Timer
/// </summary>
public void Stop()
{
b_Tricking = false;
} /// <summary>
/// Continue the Timer
/// </summary>
public void Continue()
{
b_Tricking = true;
} /// <summary>
/// Restart the this Timer
/// </summary>
public void Restart()
{
b_Tricking = true;
f_CurTime = 0.0f;
} /// <summary>
/// Change the trigger time in runtime
/// </summary>
/// <param name="second">Trigger Time</param>
public void ResetTriggerTime(float second)
{
f_TriggerTime = second;
}
}
using UnityEngine;
using System.Collections; public class TimerManager : MonoBehaviour
{
Timer test; // Use this for initialization
void Start () {
test = new Timer(3.0f);
test.tick += Test;
test.tick += Test2;
test.Start();
} // Update is called once per frame
void Update () { //If u have many timer
//u also can serval frame call one time to save some performance, but the deltaTime u should calculate youself
//like :(u should define lastTime youself-- float) /*
if(Time.frameCount%5 == 0)
{
delta = Time.time - lastTime;
test.Update(Time.deltaTime);
lastTime = Time.time;
}
*/ test.Update(Time.deltaTime);
} //Some time u may need this to avoid conflict when re-init something , just a tip .
void OnDestory(){
test.tick -= Test;
test.tick -= Test2;
} void Test()
{
Debug.Log("");
} void Test2()
{
Debug.Log("");
}
}
[Unity3D]计时器/Timer的更多相关文章
- (转)[Unity3D]计时器/Timer
http://blog.sina.com.cn/s/blog_5b6cb9500101aejs.html 项目中管理计时器太混乱难看了,用好听点的话来说就是代码不优雅. 想了下就随手简单写了个时间 ...
- 计时器 Timer
计时器 Timer 不多说了,守则.
- C# - 计时器Timer
System.Timers.Timer 服务器计时器,允许指定在应用程序中引发事件的重复时间间隔. using System.Timers: // 在应用程序中生成定期事件 public class ...
- Android中三种计时器Timer、CountDownTimer、handler.postDelayed的使用
在android开发中,我们常常需要用到计时器,倒计时多少秒后再执行相应的功能,下面我就分别来讲讲这三种常用的计时的方法. 一.CountDownTimer 该类是个抽象类,如果要使用这个类中的方法, ...
- 松软科技课堂:索引器计时器Timer
在.NET中有三种计时器:1.System.Windows.Forms命名空间下的Timer控件,它直接继承自Componet.Timer控件只有绑定了Tick事件和设置Enabled=True后才会 ...
- Java计时器Timer和TimerTask用法
package com.sy.game.test; import java.util.Timer; import java.util.TimerTask; public class TimeTask ...
- C# 如何用计时器Timer控件实现停留几秒再做切换窗体的操作
C# Timer用法及实例详解 关于C# Timer类 在C#里关于定时器类就有3个 C# Timer使用的方法1.定义在System.Windows.Forms里 C# Timer使用的方法2.定 ...
- 简单实现一个Unity3d的Timer
数量使用的不太多,没有实现对象池. using System.Collections; using System.Collections.Generic; using UnityEngine; usi ...
- 计时器timer的使用
https://www.cnblogs.com/ILoveSleep/archive/2013/06/12/3133322.html
随机推荐
- Ubuntu 上创建常用磁盘阵列
RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同时希望磁盘失 ...
- php中命名空间的使用
简单使用 命名空间主要解决函数/类冲突的问题.由于PHP中中不允许函数重载,所以我们要使用的到命名空间的.先看一个简单的例子. <?php namespace A; public functio ...
- 关于js的string的3个函数slice,substring,substr对比
slice,substring,substr三个函数都是截取字符串,但是对参数的处理有区别 参数处理相似的两个函数式slice和substring slice(start,end)和substring ...
- javascript与服务器1
A. 通过在客户端设置Cookie,然后在服务器端读取它. 关于Cookie只说明一点, 它是存储在客户端机器上的一小块信息, 可以有客户端程序或服务器程序创建,并通过http传递.常用于跟踪用户在客 ...
- 【Gym 100712B】Rock-Paper-Scissors
题 题意 对给定的对手的出拳顺序,如果只能按几个R,然后几个P,再几个S的顺序出拳(几个也可以是0个),那么求赢的方法有多少种. 分析 我原来想枚举P开始的位置和S开始的位置然后算得分,但是超时了o( ...
- IOS基础之 (四) OC对象
一 建立一个OC的类 完整的写一个函数:需要函数的声明和定义. 完整的写一个类:需要类的声明和实现. 1.类的声明 声明对象的属性和行为 #import <Foundation/Foundati ...
- HD1847 Good Luck in CET-4 Everybody!(巴什博弈)
巴什博弈: 一堆物品n个,最多取m个,最少取1个,最后取走的人获胜 分析:只要保证取玩最后剩m+1个,则必定胜利,所以构造m+1,只要n是 m+1的倍数,则先手必败,每次先手取玩,后手可取使得剩下的仍 ...
- POJ1459Power Network(dinic模板)
Power Network Time Limit: 2000MS Memory Limit: 32768K Total Submissions: 25832 Accepted: 13481 D ...
- 采用get的方式提交数据到服务器
1 效果演示:
- ExtJS入门教程01,Window如此简单,你怎能不会?
这是一系列ExtJS教程,今天的是第一篇,主要介绍ExtJS中Window的基本用法.希望大家能够支持! 来吧,创建一个漂亮的弹出窗 var win = Ext.create("Ext.Wi ...