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

发表于2018-09-04
评论0 2.1k浏览

想免费获取内部独家PPT资料库?观看行业大牛直播?点击加入腾讯游戏学院游戏程序行业精英群

711501594
设置时间执行的方法需要用到时间管理类,下面就给大家介绍下实现的方法,那些还不是很熟悉的开发人员可以看看。

直接上代码:
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

原文链接

著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

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

游戏学院公众号二维码
腾讯游戏学院
微信公众号

提供更专业的游戏知识学习平台