欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Unity實現倒計時組件

 更新時間:2020年05月28日 15:00:36   作者:魔小明  
這篇文章主要介紹了Unity實現倒計時組件的使用方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

前言

倒計時功能在游戲中一直很重要, 不管是活動開放時間,還是技能冷卻。
本文實現了一個通用倒計時組件,實現了倒計時的基本功能,支持倒計時結束后的回調。

設計思路

1、倒計時的實現是通過協(xié)程,WaitForSeconds(delay)可以很好的每隔一個delay執(zhí)行一次方法,如果需要很精細的時間, 可以將delay設置成0.1等小于1的值。
2、回調是在倒計時為0時,執(zhí)行一個Action類型的方法。
3、我的這個組件默認是需要Text組件來顯示, 也可以根據需求刪除。

先看效果:

代碼實現

// 倒計時
// 倒計時結束的回調

using System;
using System.Collections;
using UnityEngine;
using UnityEngine.UI;


[RequireComponent(typeof(Text))]
public class CountDownTime : MonoBehaviour
{
  public int testTime = 15;

  private int _timeLeft = 0;
  private Text _textTimer = null;
  private float _delay = 1;
  private Action _endCallback = null;

  private void Start()
  {
    if (_textTimer == null)
      _textTimer = GetComponent<Text>();

    SetEndCallback(TestEndCallback);
    Begin(testTime, true);
  }

  public void SetEndCallback(Action callback)
  {
    _endCallback = callback;
  }

  public void Begin(int timeLeft, bool isRightNow)
  {
    _timeLeft = timeLeft;
    if (_textTimer == null)
      _textTimer = GetComponent<Text>();

    if (isRightNow) CountDown();
    if (gameObject.activeInHierarchy)
      StartCoroutine(Polling(_delay, CountDown));
  }

  private IEnumerator Polling(float delay, Action voidFunc)
  {
    while (delay > 0)
    {
      voidFunc();

      if (_timeLeft < 0 && _endCallback != null) {
        _endCallback();
        _endCallback = null;
        yield return null;

      }
      yield return new WaitForSeconds(delay);
    }
  }

  private void CountDown()
  {
    if (_timeLeft >= 0)
    {
      TimeSpan ts = new TimeSpan(0, 0, _timeLeft--);
      _textTimer.text = ts.ToString();
    }
    else if (_timeLeft < -1)
    {
      _textTimer.text = _timeLeft.ToString();
    }
  }

  private void TestEndCallback() {
    _textTimer.text = "End!!!";
  }
}

如有錯誤,歡迎指出。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 在C#中使用MongoDB數據庫

    在C#中使用MongoDB數據庫

    這篇文章介紹了在C#中使用MongoDB數據庫的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • C#實現獲取運行平臺系統(tǒng)信息的方法

    C#實現獲取運行平臺系統(tǒng)信息的方法

    這篇文章主要介紹了C#實現獲取運行平臺系統(tǒng)信息的方法,比較典型的C#應用,需要的朋友可以參考下
    2014-07-07
  • 基于C#編寫獲取硬件信息的工具類

    基于C#編寫獲取硬件信息的工具類

    這篇文章主要為大家詳細介紹了如何利用C#編寫一個獲取硬件信息的簡單工具類,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-11-11
  • C#利用雪花算法實現生成ID工具類

    C#利用雪花算法實現生成ID工具類

    雪花算法表示生成的ID如雪花般獨一無二,該算法源自Twitter,主要用于解決分布式系統(tǒng)的唯一Id生成問題,本文主要介紹了C#如何利用利用雪花算法實現生成ID,需要的可以參考下
    2023-12-12
  • C#求點集的最小包圍矩形

    C#求點集的最小包圍矩形

    這篇文章主要為大家詳細介紹了C#求點集的最小包圍矩形,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • C#實現windows form倒計時的方法

    C#實現windows form倒計時的方法

    這篇文章主要介紹了C#實現windows form倒計時的方法,涉及C#桌面程序設計中時間操作的技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • C#中使用1.7版本驅動操作MongoDB簡單例子

    C#中使用1.7版本驅動操作MongoDB簡單例子

    這篇文章主要介紹了C#中使用1.7版本驅動操作MongoDB簡單例子,本文給出了連接MongoDB、操作MongoDB數據等例子,需要的朋友可以參考下
    2015-01-01
  • C#實現將CSV轉為XLSX文件

    C#實現將CSV轉為XLSX文件

    Microsoft?Excel的XLSX格式以及基于文本的CSV(逗號分隔值)格式,是數據交換中常見的文件格式,本文主要介紹了如何在C#中以編程的方式將CSV文件轉化為XLSX?文件,需要的可以參考下
    2024-03-03
  • 在C#使用字典存儲事件示例及實現自定義事件訪問器

    在C#使用字典存儲事件示例及實現自定義事件訪問器

    這篇文章主要介紹了在C#使用字典存儲事件示例及實現自定義事件訪問器的方法,是C#事件編程中的基礎知識,需要的朋友可以參考下
    2016-02-02
  • WPF運行時替換方法實現mvvm自動觸發(fā)刷新

    WPF運行時替換方法實現mvvm自動觸發(fā)刷新

    這篇文章主要為大家詳細介紹了WPF運行時如何實現setter不需要調方法就可以自動觸發(fā)界面刷新,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-04-04

最新評論