本文作者:qiaoqingyi

倒计时编程(倒计时编程图形)

qiaoqingyi 03-09 146

  

  来这里找志同道合的小伙伴!

今天小编为大家分享一下,如何快速写一个简单的计时器,其实说到计时器,我们能用协程实现,也可以用 Unity 内置的委托 Invoke 实现,然而小编利用自定义的委托,快速写一个统一管理计时器。

1.第一步,新建 Unity项目,并且新建一个Timer.cs ,这个是计时器的核心类文件;

Timer.cs 代码如下:

  public class Timer

  {

  bool _isTicking;//是否在计时中

  float _currentTime;//当前时间

  float _endTime;//结束时间

  public delegate void EventHander();

  public event EventHander tickEvent;

  public Timer(float second)

  {

  _currentTime = 0;

  _endTime = second;

  }

  /// summary

  /// 开始计时

倒计时编程(倒计时编程图形)

  /// /summary

  public void StartTimer()

  {

  _isTicking = true;

  }

  /// summary

  /// 更新中

  /// /summary

  public void UpdateTimer(float deltaTime)

  {

  if (_isTicking)

  {

  _currentTime += deltaTime;

  if (_currentTime _endTime)

  {

  _isTicking = false;

  tickEvent();

  }

  }

  }

  /// summary

  /// 停止计时

  /// /summary

  public void StopTimer()

  {

  _isTicking = false;

  }

  /// summary

  /// 持续计时

  /// /summary

  public void ContinueTimer()

  {

  _isTicking = true;

  }

  /// summary

  /// 重新计时

  /// /summary

  public void ReStartTimer()

  {

  _isTicking = true;

  _currentTime = 0;

  }

  /// summary

  /// 重新设定计时器

  /// /summary

  public void ResetEndTimer(float second)

  {

  _endTime = second;

  }

  }

2.第二步,在场景中,直接附加调用计时器类TimerManager.cs组件类;

TimerManager.cs 代码如下:

  using UnityEngine;

  using System.Collections;

  public class TimerManager : MonoBehaviour {

  Timer _timer;

  // Use this for initialization

  void Start () {

  //初始化计时器

  _timer = new Timer(10);

  _timer.tickEvent += SendMessage;

  //10秒后开始发送信息

  _timer.StartTimer();

  }

  private void SendMessage()

  {

  Debug.Log("Hello! AnimeKing!");

  }

  // Update is called once per frame

  void Update () {

  _timer.UpdateTimer(Time.deltaTime);

  }

  void OnDestroy()

  {

  _timer.tickEvent -= SendMessage;

  }

  }

3.第三步,直接运行项目看结果啦!

  

阅读
分享