一个实用的计时器,可以计时延迟调用和延迟重复次数调用。
可以自己封装成单例模式挂在GameObject上使用,或者在另一个behavior的Update里执行这个类的OnUpdate()方法再使用。
为了更加安全的使用,建议在销毁MonoBehaviour时清理一下对应的所有计时器。
或者调用时可选择传入回调所在的MonoBehaviour,这样就可以自动清理了。
using System.Collections;
using System;
using System.Collections.Generic;
using UnityEngine;
public static class DelayCall{private static List calltimes = new List();
private static Dictionary callsort = new Dictionary();
private static int countid = 0;
/// /// 生成id/// /// The new identifier./// Call.private static int getNewId(CallObj call){countid++;
if (countid >= int.MaxValue){countid = 1;
}while (callsort.ContainsKey(countid)) countid++;
call.callid = countid;
callsort.Add(countid, call);
return countid;
}public static void ClearAll(){calltimes.Clear();
callsort.Clear();
}/// /// 删除延迟执行./// /// /// Call./// public static void remove(int callid){if (callid > 0 && callsort.ContainsKey(callid)){CallObj call = callsort[callid];
callsort.Remove(callid);
if (call != null){calltimes.Remove((CallTimeObj)call);
}}}public static int AddTime(float delayTime, object arg, int repeat = 1,Action
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
推荐阅读