// Update is called once per frame void Update() { for (int i = EventLists.Count - 1; i >= 0; --i) { tmpEvent = EventLists[i]; try { if (tmpEvent.IsCanRemoveEvent()) { tmpEvent.IsFinish = true; } } catch (Exception exp) { Debug.LogException(exp); tmpEvent.IsFinish = true; } } for (int i = EventLists.Count - 1; i >= 0; --i) { tmpEvent = EventLists[i]; if (tmpEvent.IsFinish) { try { if (tmpEvent.OnFinish != null) { tmpEvent.OnFinish(); } } catch (Exception exp) { Debug.LogException(exp); } finally { EventLists.Remove(tmpEvent); } } } }