Exemplo n.º 1
0
        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;
            //处理特效
        }
Exemplo n.º 2
0
        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;
            }
        }