Unity3d游戏开发框架-时间管理类,设置时间执行方法

发表于2018-09-04
评论0 5.1k浏览
设置时间执行的方法需要用到时间管理类,下面就给大家介绍下实现的方法,那些还不是很熟悉的开发人员可以看看。

直接上代码:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System;
public class TimeMgr : MonoBehaviour 
{
    private static TimeMgr mInstance;
    public static TimeMgr Instance
    {
        get
        {
            return mInstance;
        }
    }
    public delegate void Interval();
    private Dictionary<Interval, float> mDicinterval = new Dictionary<Interval, float>();
    public void AddInterval(Interval interval,float time)
    {
        if (null != interval)
        mDicinterval[interval] = Time.time + time;
    }
    public void RemoveInterval(Interval interval)
    {
         if (null != interval)
         {
             if (mDicinterval.ContainsKey(interval))
             {
                 mDicinterval.Remove(interval);
             }
         }
    }
    // Awake is called when the script instance is being loaded.
    void Awake() 
    {
        mInstance = this;
    }
    void Update()
    {
        if(mDicinterval.Count > 0)
        {
            List<Interval> remove = new List<Interval>();
            foreach(KeyValuePair<Interval,float> KeyValue in mDicinterval)
            {
                if (KeyValue.Value <= Time.time)
                {
                    remove.Add(KeyValue.Key);
                }
            }
            for (int i = 0; i < remove.Count;i++ )
            {
                remove[i]();
                mDicinterval.Remove(remove[i]);
            }
        }
    }
}
Test:
void Start()
    {
        TimeMgr.Instance.AddInterval(TestCall1, 3f);
    }
void TestCall1()
    {
        Debug.LogError("TestCall_1");
        TimeMgr.Instance.AddInterval(TestCall2, 2f);
    }
    void TestCall2()
    {
        Debug.LogError("TestCall_2");
        TimeMgr.Instance.AddInterval(TestCall1, 5f);
    }
来自:https://blog.csdn.net/u013108312/article/details/54378613

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引