|  |  | 
 |  |  |  | 
 |  |  |     protected bool isFinish = false; | 
 |  |  |  | 
 |  |  |     protected bool isFinishFrameEnd = false; | 
 |  |  |  | 
 |  |  |     protected Action<int, List<HB427_tagSCUseSkill.tagSCUseSkillHurt>> onHit; | 
 |  |  |  | 
 |  |  |     public SkillEffect(SkillConfig _skillConfig, BattleObject _caster, HB427_tagSCUseSkill _tagUseSkillAttack) | 
 |  |  | 
 |  |  |         onHit = _onHit; | 
 |  |  |         if (skillConfig.EffectId > 0) | 
 |  |  |         { | 
 |  |  |             caster.battleField.battleEffectMgr.PlayEffect(caster.ObjID, skillConfig.EffectId, caster.heroRectTrans, caster.Camp); | 
 |  |  |             caster.battleField.battleEffectMgr.PlayEffect(caster, skillConfig.EffectId, caster.heroRectTrans, caster.Camp); | 
 |  |  |         } | 
 |  |  |         if (skillConfig.EffectId2 > 0) | 
 |  |  |         { | 
 |  |  |             caster.battleField.battleEffectMgr.PlayEffect(caster.ObjID, skillConfig.EffectId2, caster.heroRectTrans, caster.Camp); | 
 |  |  |             caster.battleField.battleEffectMgr.PlayEffect(caster, skillConfig.EffectId2, caster.heroRectTrans, caster.Camp); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |         if (skillConfig.MStartEffectId <= 0) | 
 |  |  |             return; | 
 |  |  |         //  中摇固定特效 | 
 |  |  |         caster.battleField.battleEffectMgr.PlayEffect(caster.ObjID, skillConfig.MStartEffectId, caster.heroGo.transform, caster.Camp); | 
 |  |  |         caster.battleField.battleEffectMgr.PlayEffect(caster, skillConfig.MStartEffectId, caster.heroGo.transform, caster.Camp); | 
 |  |  |     } | 
 |  |  |      | 
 |  |  |     /// <summary> | 
 |  |  |     /// 后摇开始 | 
 |  |  |     /// </summary> | 
 |  |  |     public virtual void OnFinalFrameStart() | 
 |  |  |     { | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /// <summary> | 
 |  |  |     /// 后摇结束 | 
 |  |  |     /// </summary> | 
 |  |  |     public virtual void OnFinalFrameEnd() | 
 |  |  |     { | 
 |  |  |         isFinishFrameEnd = true; | 
 |  |  |     } | 
 |  |  |      | 
 |  |  |     public virtual bool IsFinished() | 
 |  |  |     { | 
 |  |  |         return isFinish; | 
 |  |  |         return isFinish && isFinishFrameEnd; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public virtual void ForceFinished() | 
 |  |  |     { | 
 |  |  |         isFinish = true; | 
 |  |  |         isFinishFrameEnd = true; | 
 |  |  |     } | 
 |  |  | } |