1. 程式人生 > >Unity3d遊戲開發框架-時間管理類,設定時間執行方法。

Unity3d遊戲開發框架-時間管理類,設定時間執行方法。

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);

    }