美文网首页
倒计时管理器

倒计时管理器

作者: 月下弄人醉丶 | 来源:发表于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();

        }

    }

    相关文章

      网友评论

          本文标题:倒计时管理器

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