本文固定連結:http://blog.csdn.net/u013108312/article/details/54378613
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); }
本文固定連結:http://blog.csdn.net/u013108312/article/details/54378613