Unity3d遊戲開發框架-時間管理類,設定時間執行方法。
阿新 • • 發佈:2019-02-18
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);
}