public void Update() { Dictionary <DialogMessage, float> clone = new Dictionary <DialogMessage, float>(_timers); foreach (KeyValuePair <DialogMessage, float> pair in clone) { float timer = pair.Value; DialogMessage message = pair.Key; timer -= Time.deltaTime; if (timer <= 0) { _timers.Remove(message); message.Close(); } else { _timers[message] = timer; } } }