Unity3d游戏开发框架-时间管理类,设置时间执行方法
发表于2018-09-04
设置时间执行的方法需要用到时间管理类,下面就给大家介绍下实现的方法,那些还不是很熟悉的开发人员可以看看。
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
Unity3d游戏开发框架系列
5、消息机制