/// <summary> /// 添加命中前对象 /// </summary> /// <param name="casterid">施法者的唯一ID</param> /// <param name="beforeHit"></param> public void AddBeforeHit(int casterid, BeforeHit beforeHit) { // 如果容器中有角色对应的命中前对象 if (_beforeHits.ContainsKey(casterid)) { _beforeHits[casterid].Add(beforeHit); } else { _beforeHits.Add(casterid, new List <BeforeHit>()); _beforeHits[casterid].Add(beforeHit); } }
/// <summary> /// 释放技能 /// </summary> public void Cast() { // 记录这次释放技能的时间 _lastCastTime = Time.time; // 创建一个命中前对象 BeforeHit beforeHit = new BeforeHit(_caster); beforeHit.SkillBasicCfg = _skillBasicCfg; beforeHit.SkillBulletCfg = _skillBulletCfg; beforeHit.SkillAOECfg = _skillAOECfg; beforeHit.SkillBuffCfg = _skillBuffCfg; beforeHit.SkillTrapCfg = _skillTrapCfg; SkillManager.instance.AddBeforeHit(_caster.GlobalID, beforeHit); }
/// <summary> /// 更新命中前对象 /// </summary> /// <param name="dt"></param> private void UpdateBeforeHit(float dt) { foreach (List <BeforeHit> beforeHits in _beforeHits.Values) { for (int i = 0; i < beforeHits.Count; i++) { BeforeHit bh = beforeHits[i]; if (bh.hit) { beforeHits.Remove(bh); } else { bh.Update(dt); } } } }
public override void Register() { BeforeHit.Add(new BeforeHitHandler(HandleBanish)); }
public override void Register() { BeforeHit.Add(new BeforeHitHandler(PreventHitByLoS)); AfterHit.Add(new HitHandler(RestoreImmunity)); }
public override void Register() { BeforeHit.Add(new BeforeHitHandler(HandleBeforeHit)); AfterHit.Add(new HitHandler(HandleAfterHit)); }