public void DissoveToDeath(float r, float g, float b, float a, float corpseStayDuration) { if (_DeathEffect != null) { return; } _DeathEffect = EffectObjectPool.Get(this, EffectType.DissolveDeath) as DissoveDeath; if (_DeathEffect != null) { _DeathEffect.Start(r / 255.0f, g / 255.0f, b / 255.0f, a / 255.0f, corpseStayDuration); _CurEffectsMask |= _DeathEffect.Mask; } }
public void OnRecycle() { if (OnRecycleCallback != null) { OnRecycleCallback(this); } _CurEffectsMask = 0; ChangeMaterials(); _LastEffectMask = 0; // if (_FadeEffect != null) // { // _FadeEffect.Stop(); // _FadeEffect = null; // } if (_DeathEffect != null) { _DeathEffect.Stop(); _DeathEffect = null; } foreach (var kv in _EntityRimEffectMap) { if (kv.Value != null) { kv.Value.Stop(); } } _EntityRimEffectMap.Clear(); if (_Frozen != null) { _Frozen.Stop(); _Frozen = null; } }
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 }