美文网首页
倒计时管理器

倒计时管理器

作者: 月下弄人醉丶 | 来源:发表于2019-07-12 13:51 被阅读0次

using System;

using System.Collections.Generic;

using UnityEngine;

public class CountDownData

{

    public int index;

    public float lastTimeRecord;

    public float intervalTime;

    public bool isPlay;

    public Action Callback;

    public void UpdateDate(int index, float intervalTime, bool isPlay, Action Callback)

    {

        this.index = index;

        this.lastTimeRecord = Time.timeSinceLevelLoad;

        this.intervalTime = intervalTime;

        this.isPlay = isPlay;

        this.Callback = Callback;

    }

}

public class TimeTool : MonoBehaviour

{

    public static TimeTool Instance { get; set; }

    private int index;

    private List<CountDownData> countDownDataList = new List<CountDownData>();

    public void Awake()

    {

        Instance = this;

    }

    // Start is called before the first frame update

    public int AddCountdown(float intervalTime, bool isPlay, Action Callback)

    {

        CountDownData timeData = new CountDownData();

        index++;

        timeData.UpdateDate(index, intervalTime, isPlay, Callback);

        countDownDataList.Add(timeData);

        return index;

    }

    public void UpdateCountDown(float intervalTime, bool isPlay, Action Callback)

    {

        GetCountData(index).UpdateDate(index, intervalTime, isPlay, Callback);

    }

    public void SetCountdownState(int index, bool isPlay)

    {

        GetCountData(index).isPlay = isPlay;

    }

    public void RemoveCountdown(int index)

    {

        countDownDataList.RemoveAt(index - 1);

        //CountDownData countDownData = null;

        //for (int i = 0; i < countDownDataList.Count; i++)

        //{

        //    if (countDownDataList[i].index == index)

        //    {

        //        countDownData = countDownDataList[i];

        //        break;

        //    }

        //}

        //if (countDownData != null)

        //{

        //    countDownDataList.Remove(countDownData);

        //}

    }

    private CountDownData GetCountData(int index)

    {

        for (int i = 0; i < countDownDataList.Count; i++)

        {

            if (countDownDataList[i].index == index)

            {

                return countDownDataList[i];

            }

        }

        return null;

    }

    // Update is called once per frame

    void Update()

    {

        float time = Time.timeSinceLevelLoad;

        if (countDownDataList.Count > 0)

        {

            for (int i = 0; i < countDownDataList.Count; i++)

            {

                CountDownData item = countDownDataList[i];

                if (time - item.lastTimeRecord >= item.intervalTime && item.isPlay)

                {

                    item.Callback();

                    item.lastTimeRecord = time;

                }

            }

        }

    }

    public void RemoveAll()

    {

        countDownDataList.Clear();

    }

}

相关文章

  • 倒计时管理器

    using System; using System.Collections.Generic; using Uni...

  • iOS 下载管理器

    iOS 下载管理器 iOS 下载管理器

  • Flink(4)运行时架构

    Flink 运行时的组建 作业管理器: JobManager 任务管理器: TaskManager 资源管理器:R...

  • 计时员APP技术支持

    我们的应用程序可以用为计时器、提醒器、闹钟、倒计时器,任务管理器和任务清单。您可以使用任何数量的计时器,在任何一个...

  • 16 Go 鉴权(二):实现Session管理器及Session

    一、Go实现Session管理器 Go官方没有提供Session管理器,我们需自己实现Session管理器,Ses...

  • 二、Android布局管理器

    1、布局管理器的继承关系 Android布局管理器本身也是UI组件,所有的布局管理器都是ViewGroup的子类,...

  • Linux包管理器用法整理

    Pacman 包管理器 Pacman是Arch Linux 的包管理器,也是 MSYS2的包管理器,算是比较好用的...

  • tmux精美主题Dracula配置

    安装tpm插件管理器 首先下载tpm插件管理器 配置激活插件管理器 从新加载tmux配置 安装Dracula 将D...

  • spring事务

    1、spring事务管理器PlatformTransactionManager 1.1、没有spring事务管理器...

  • 基础:解压皮肤

    返回使用指南 软件:es文件管理器 不要拘泥,基本上所有的文件管理器都可以支持。例如mt管理器

网友评论

      本文标题:倒计时管理器

      本文链接:https://www.haomeiwen.com/subject/cjmekctx.html