public void Update() { int _len = functionList.Count; for (int i = 0; i < _len;) { DelayCallFun _dc = functionList[i]; if (_dc.callTime <= Time.realtimeSinceStartup) { _dc.fun(_dc.param); functionList.RemoveAt(i); _len--; } else { i++; } } }
public void CallFunction(MyEventHandler handler, float _time, params object[] objs) { DelayCallFun dc = new DelayCallFun(); dc.callTime = Time.realtimeSinceStartup + _time; dc.fun = handler; dc.param = objs; int _len = functionList.Count; for (int i = 0; i < _len; i++) { DelayCallFun _dc = functionList[i]; if (_dc.callTime > dc.callTime) { functionList.Insert(i, dc); return; } } functionList.Add(dc); }