private void SwitchAbnormalState(eAbnormalState abnormalState, AbnormalStateEffectPrefabData _specialEffectData) { AbnormalStateCategoryData categoryData = abnormalStateCategoryDataDictionary[GetAbnormalStateCategory(abnormalState)]; EnableAbnormalState(categoryData.CurrentAbnormalState, false, false, true); EnableAbnormalState(abnormalState, true, false, false); categoryData.CurrentAbnormalState = abnormalState; //处理特效 }
private IEnumerator UpdateAbnormalState(eAbnormalState _abnormalState, AbnormalStateEffectPrefabData _specialEffectData) { eAbnormalStateCategory category = GetAbnormalStateCategory(_abnormalState); AbnormalStateCategoryData categoryData = abnormalStateCategoryDataDictionary[category]; categoryData.Time = categoryData.Duration; //特效处理 EnableAbnormalState(_abnormalState, true, categoryData.IsEnergyReduceMode, false); while (true) { if (IsAbnormalState(category)) { _abnormalState = categoryData.CurrentAbnormalState; if (categoryData.IsEnergyReduceMode) { float energy_min = categoryData.EnergyReduceRate * DeltaTimeForPause_BUFF; SetEnergy(Energy - energy_min, eSetEnergyType.BY_MODE_CHANGE, null); if (Energy <= 0) { EnableAbnormalState(_abnormalState, false); yield break; } } else { categoryData.Time -= DeltaTimeForPause_BUFF; if (categoryData.Time <= 0) { EnableAbnormalState(_abnormalState, false); yield break; } } if (!IsDead) { yield return(null); continue; } EnableAbnormalState(_abnormalState, false); break; } break; } }