public void Tick(float dt) { if (_CurEffectsMask != _LastEffectMask) { ChangeMaterials(); _LastEffectMask = _CurEffectsMask; } #region Frozen if (_Frozen != null) { // 冰冻效果无Update,通过服务器逻辑进行效果增删 // 冰冻效果覆盖以下所有效果 return; } #endregion // Frozen #region Death if (_DeathEffect != null) { if (!_DeathEffect.Update()) { _DeathEffect.Stop(); _CurEffectsMask &= ~_DeathEffect.Mask; _DeathEffect = null; } return; } #endregion // Death #region FadeEffect // if (_FadeEffect != null) // { // if (!_FadeEffect.Update()) // { // _FadeEffect.Stop(); // _CurEffectsMask &= ~_FadeEffect.Mask; // _FadeEffect = null; // } // return; // } #endregion // FadeEffect #region RimEffect var effectType = GetMostPriorRimEffect(); if (effectType != RimEffectType.None) { var mostPriorEffect = _EntityRimEffectMap[effectType]; if (!mostPriorEffect.Update()) { mostPriorEffect.Stop(); _CurEffectsMask &= ~mostPriorEffect.Mask; _EntityRimEffectMap.Remove(effectType); // 重启其他可能存在的Rim效果 foreach (var kv in _EntityRimEffectMap) { if (kv.Value != null) { kv.Value.Restart(); } } } } #endregion // RimEffect }