|  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | protected SkillConfig skillConfig; | 
|---|
|  |  |  | protected BattleObject caster; | 
|---|
|  |  |  | protected H0604_tagUseSkillAttack tagUseSkillAttack;// 目标列表 | 
|---|
|  |  |  | protected HB427_tagSCUseSkill tagUseSkillAttack;// 目标列表 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public SkillEffect(SkillConfig _skillConfig, BattleObject _caster, H0604_tagUseSkillAttack _tagUseSkillAttack) | 
|---|
|  |  |  | 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) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | skillConfig = _skillConfig; | 
|---|
|  |  |  | caster = _caster; | 
|---|
|  |  |  | tagUseSkillAttack = _tagUseSkillAttack; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public Action OnHit; // 表现到达目标时回调 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // | 
|---|
|  |  |  | public virtual void Play(Action<int, List<H0604_tagUseSkillAttack.tagSkillHurtObj>> _onHit) | 
|---|
|  |  |  | public virtual void Play(Action<int, List<HB427_tagSCUseSkill.tagSCUseSkillHurt>> _onHit) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | // OnHit = _onHit; | 
|---|
|  |  |  | // switch (skillConfig.effectType) | 
|---|
|  |  |  | // { | 
|---|
|  |  |  | //     case SkillEffectType.StageEffect: | 
|---|
|  |  |  | //         Debug.LogError("播放场景特效"); | 
|---|
|  |  |  | //         break; | 
|---|
|  |  |  | //     case SkillEffectType.Bullet: | 
|---|
|  |  |  | //         // 伪代码:表现子弹飞行 | 
|---|
|  |  |  | //         Debug.Log("播放子弹特效"); | 
|---|
|  |  |  | //         // 到达目标时 | 
|---|
|  |  |  | //         OnHit?.Invoke(); | 
|---|
|  |  |  | //         break; | 
|---|
|  |  |  | //     case SkillEffectType.Direct: | 
|---|
|  |  |  | //         // 伪代码:直接在目标身上播放特效 | 
|---|
|  |  |  | //         Debug.Log("播放直接特效"); | 
|---|
|  |  |  | //         OnHit?.Invoke(); | 
|---|
|  |  |  | //         break; | 
|---|
|  |  |  | //     case SkillEffectType.BuffEffect: | 
|---|
|  |  |  | //         // 伪代码:播放持续特效 | 
|---|
|  |  |  | //         Debug.Log("播放Buff特效"); | 
|---|
|  |  |  | //         break; | 
|---|
|  |  |  | //     default: | 
|---|
|  |  |  | //         break; | 
|---|
|  |  |  | // } | 
|---|
|  |  |  | onHit = _onHit; | 
|---|
|  |  |  | if (skillConfig.EffectId > 0) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | caster.battleField.battleEffectMgr.PlayEffect(caster, skillConfig.EffectId, caster.heroRectTrans, caster.Camp); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (skillConfig.EffectId2 > 0) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | caster.battleField.battleEffectMgr.PlayEffect(caster, skillConfig.EffectId2, caster.heroRectTrans, caster.Camp); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public virtual void Run() | 
|---|
|  |  |  | { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public virtual void OnMiddleFrameEnd(int times, int hitIndex) | 
|---|
|  |  |  | { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public virtual void OnMiddleFrameStart(int times) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if (skillConfig.MStartEffectId <= 0) | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | //  中摇固定特效 | 
|---|
|  |  |  | 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 && isFinishFrameEnd; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public virtual void ForceFinished() | 
|---|
|  |  |  | { | 
|---|
|  |  |  | isFinish = true; | 
|---|
|  |  |  | isFinishFrameEnd = true; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|