Unity 计时器
c#作为一门强大的编程语言绝对有计时器这样的功能,而且有3钟,unity能用的有2种。
System.Timers.Timer t = new System.Timers.Timer(1000);//实例化Timer类,设置间隔时间,单位为毫秒;
t.Elapsed += new System.Timers.ElapsedEventHandler(event);//到达时间的时候执行“event”函数(方法);
t.AutoReset = true;//设置是执行一次(false)还是一直执行(true),一直执行就是每到设定的时间都执行一次。;
t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件(这个一定要是true,否则无法执行);
public void event(object source, System.Timers.ElapsedEventArgs e) //被绑定的方法(函数)
{
在这儿添加你想执行的内容
}
另外一种我就不介绍了。
我测试了一下,除了不能在Flash平台使用这个计时器,其他平台都行。
计时器还有很多强大功能,你自己慢慢研究吧!
我上面介绍的定时器中
AutoReset属性默认为true,即每到时间就会执行一次
而Enabled属性呢,默认为false
但是我们一般不直接更改Enabled属性来启动或停止定时器,而是用start()或stop()方法来启动或停止。
System.Timers.Timer t = new System.Timers.Timer(1000);
t.Elapsed += new System.Timers.ElapsedEventHandler(event);
t.start():
public void event(object source, System.Timers.ElapsedEventArgs e) //被绑定的方法(函数)
{
在这儿添加你想执行的内容
}
这样的话每隔1秒就执行一次event方法,如果不让它再执行,就输入
t.stop()就行拉!
using UnityEngine; using System.Collections; public class CoolTime : MonoBehaviour { // Use this for initialization private int counter = 15; private System.Timers.Timer timer = new System.Timers.Timer(1000); void Start () { timer.Elapsed += new System.Timers.ElapsedEventHandler (onTimerHandler); timer.Start (); } void Update () { } void OnGUI(){ GUILayout.Label(counter.ToString()); } void onTimerHandler(object source, System.Timers.ElapsedEventArgs args){ counter --; } }
//********************************//
using System.Timers;
private bool _isHasStartGame = false;
private System.Timers.Timer _timer;
private void OnPrepareGame(JsonObject _object){
_timer = new System.Timers.Timer(10000);
_timer.Elapsed += new ElapsedEventHandler(DoStartGame);
_timer.AutoReset = true;
_timer.Enable = true;
_timer.Start();
}
private void DoStartGame(){
if (_isHasStartGame == false) {
} else {
_timer.Stop();
}
}
private void OnStartGame(){
_isHasStartGame = true;
}