public void FixedUpdate() { List <TimerHandler> removeList = new List <TimerHandler>(); if (timerDict == null) { timerDict = new Dictionary <TimerHandler, TimerInfo>(); } foreach (KeyValuePair <TimerHandler, TimerInfo> timerPair in timerDict) { if (timerPair.Value.count == 0) { removeList.Add(timerPair.Key); } } foreach (TimerHandler timerHandler in removeList) { timerDict.Remove(timerHandler); log.Debug("Remove TimerHandler : " + timerHandler); } TimerInfo timerInfo = null; foreach (KeyValuePair <TimerHandler, TimerInfo> timerPair in timerDict) { timerInfo = timerPair.Value; if ((timerInfo.lastTimer + timerInfo.delay) <= Time.realtimeSinceStartup * 1000) { if (timerInfo.count != -1) { timerInfo.count--; } timerInfo.OnEventHander(); timerInfo.lastTimer += timerInfo.delay; } } }