private Ability.Ability SetEachPower(string tag, GameObject power, int capacity, float timer, float cooldown)
        {
            Ability.Ability abilityAux = power.GetComponent <Ability.Ability>();
            abilityAux.setTag(tag);
            abilityAux.setAbility(power);
            abilityAux.setSize(capacity);
            abilityAux.setTimer(timer);
            abilityAux.setCast(true);
            abilityAux.setCoolDown(cooldown);

            return(abilityAux);
        }
        private IEnumerator AbilityCooldown(Ability.Ability abilityComponent)
        {
            yield return(new WaitForSeconds(abilityComponent.getCooldown()));

            abilityComponent.setCast(true);
        }
        private void CastAbility(string tag, int num)
        {
            GameObject abilityToSpawn;

            abilityToSpawn = spawnAbility(tag);

            Ability.Ability abilityComponent = abilityToSpawn.GetComponent <Ability.Ability>();

            if (abilityComponent.isCast())
            {
                if (!(_powerNum == 1 && _hit))
                {
                    abilityToSpawn.SetActive(false);
                }

                if (transform.position.x < _abilityPos.x)
                {
                    _spriteRenderer.flipX = false;
                }
                else
                {
                    _spriteRenderer.flipX = true;
                }

                StartCoroutine(AbilityCooldown(abilityComponent));

                if (tag == "Shuriken")
                {
                    abilityComponent.abilityUtility(abilityToSpawn, _abilityPos, transform.position, _maxAbilityRange);
                }
                else
                {
                    abilityComponent.abilityUtility(abilityToSpawn, _abilityPos, transform.position, _maxAbilityRange);
                }

                /*_actualTime = Time.timeSinceLevelLoad;
                 *
                 * _auxList = _allAbilitiesCooldowns[_powerNum];
                 *
                 * float auxDate = Time.timeSinceLevelLoad;
                 *
                 * if (num == 0)
                 * {
                 *  int auxValue = 0;
                 *
                 *  for (int i = 0; i < _auxList.Count - 1; i++)
                 *  {
                 *      if (_auxList[i] < auxDate)
                 *      {
                 *          auxDate = _auxList[i];
                 *          auxValue = i;
                 *      }
                 *  }
                 *
                 *  _auxList[auxValue] = _actualTime;
                 *
                 * }
                 * else
                 * {
                 *  _auxList[_auxList.Count - 1] = _actualTime;
                 * }
                 *
                 * _auxSpecificAbilityList = _cooldownActiveAbility.UpdateCooldown(
                 *  _allAbilitiesCooldowns[_powerNum], _abilities[_powerNum][0].getSize(),
                 *  _abilities[_powerNum][0].getCooldown(), _abilities[_powerNum][1].getCooldown(), true);
                 *
                 * for (int i = 0; i < _auxSpecificAbilityList.Count; i++)
                 * {
                 *  _allAbilitiesCooldowns[_powerNum][i] = _auxSpecificAbilityList[i];
                 * }*/

                if (abilityComponent.getTimer() > 0 && !tag.Equals("SuperRock"))
                {
                    StartCoroutine(AbilityDisappear(abilityComponent.getTimer(), abilityToSpawn));
                }
            }
        }
 /// <summary>
 /// 设置当前发动的技能
 /// </summary>
 /// <param name="self"></param>
 /// <param name="ability"></param>
 public static void SetSpellingAbility(this GameplayTool self, Ability.Ability ability)
 {
     Info.SpellingAbility = ability;
 }