/// <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));
 }
Exemple #6
0
 public override void Register()
 {
     BeforeHit.Add(new BeforeHitHandler(HandleBeforeHit));
     AfterHit.Add(new HitHandler(HandleAfterHit));
 }