public void Add(Effect effect) { effect.Apply(); activeEffects.Add(effect); // weird way to schedule something to be done after a delay // http://answers.unity3d.com/questions/897095/workaround-for-using-invoke-for-methods-with-param.html StartCoroutine(UnapplyAfter(effect)); }