/// <summary> /// 初始化主动技能按钮 /// </summary> public void SetUpActiveSkillButtons() { for (int i = 0; i < activeSkillButtonContainer.childCount; i++) { ActiveSkillButton activeSkillButton = activeSkillButtonContainer.GetChild(i).GetComponent <ActiveSkillButton>(); float coolenPercentage = activeSkillButton.mask.fillAmount; player.attachedActiveSkills[i].coolenPercentage = (int)(coolenPercentage * 100); } for (int i = 0; i < activeSkillButtonContainer.childCount; i++) { activeSkillButtonContainer.GetChild(i).GetComponent <ActiveSkillButton>().Reset(); } activeSkillButtonPool.AddChildInstancesToPool(activeSkillButtonContainer); if (bpCtr.towards == MyTowards.Left || bpCtr.towards == MyTowards.Right) { for (int i = 0; i < player.attachedActiveSkills.Count; i++) { ActiveSkill skill = player.attachedActiveSkills[i]; ActiveSkillButton activeSkillButton = activeSkillButtonPool.GetInstance <ActiveSkillButton>(activeSkillButtonModel.gameObject, activeSkillButtonContainer); int index = i; //Debug.LogFormat("skill:{0},coolenPercentage:{1}", player.attachedActiveSkills[i].skillName, player.attachedActiveSkills[i].coolenPercentage); activeSkillButton.SetUpActiveSkillButton(skill, index, activeSkillButtonContainer); activeSkillButton.AddListener(OnActiveSkillButtonClick); } } }
/// <summary> /// 战斗过程中如果遗忘技能,需要将该主动技能的按钮移除 /// </summary> public void RemoveActiveSkillButton(Skill skill) { for (int i = 0; i < activeSkillButtonContainer.childCount; i++) { ActiveSkillButton activeSkillButton = activeSkillButtonContainer.GetChild(i).GetComponent <ActiveSkillButton>(); if (activeSkillButton.skill.skillId == skill.skillId) { activeSkillButton.Reset(); activeSkillButtonPool.AddInstanceToPool(activeSkillButton.gameObject); } } // 移除技能按钮时要更新技能按钮的点击响应,因为响应方法中有一个序号参数需要更新 //(进入战斗初始化的时候按照技能顺序给按钮定了序号,点击时根据序号参数获得使用的是哪个技能,遗忘技能后该序号参数应该也更新一次) for (int i = 0; i < player.attachedActiveSkills.Count; i++) { ActiveSkill activeSkill = player.attachedActiveSkills[i]; ActiveSkillButton activeSkillButton = activeSkillButtonContainer.GetChild(i).GetComponent <ActiveSkillButton>(); int index = i; float coolenPercentage = activeSkillButton.mask.fillAmount; activeSkill.coolenPercentage = (int)(coolenPercentage * 100); activeSkillButton.SetUpActiveSkillButton(activeSkill, index, activeSkillButtonContainer); activeSkillButton.AddListener(OnActiveSkillButtonClick); } }
public void InitAllActiveSkillButtons() { for (int i = 0; i < activeSkillButtonContainer.childCount; i++) { ActiveSkillButton activeSkillButton = activeSkillButtonContainer.GetChild(i).GetComponent <ActiveSkillButton>(); activeSkillButton.validTint.gameObject.SetActive(false); activeSkillButton.Reset(); } }
/// <summary> /// 玩家角色的攻击动作结束时更新技能的可点击状态 /// </summary> public void UpdateActiveSkillButtonsWhenAttackAnimFinish() { for (int i = 0; i < activeSkillButtonContainer.childCount; i++) { ActiveSkillButton activeSkillButton = activeSkillButtonContainer.GetChild(i).GetComponent <ActiveSkillButton>(); ActiveSkill activeSkill = player.attachedActiveSkills[i]; //float coolenPercentage = activeSkillButton.mask.fillAmount; activeSkillButton.UpdateActiveSkillButton(activeSkill); } }
public void AddListener(SkillButtonClickCallBack cb) { button.onClick.RemoveAllListeners(); button.onClick.AddListener(delegate { mask.fillAmount = 1.0f; mask.enabled = true; button.interactable = false; skill.skillStatus = ActiveSkillStatus.Cooling; cb(indexInPanel); if (maskTweener != null) { maskTweener.Kill(); } validTint.gameObject.SetActive(false); maskTweener = mask.DOFillAmount(0, skill.skillCoolenTime).OnComplete(delegate { bool isManaEnough = Player.mainPlayer.mana >= skill.manaConsume; if (ExploreManager.Instance.battlePlayerCtr.isInSkillAttackAnimBeforeHit) { mask.enabled = true; mask.fillAmount = 1; skill.coolenPercentage = 0; button.interactable = false; skill.skillStatus = ActiveSkillStatus.Waiting; validTint.gameObject.SetActive(false); } else { mask.enabled = !isManaEnough; mask.fillAmount = 0; skill.coolenPercentage = 0; button.interactable = isManaEnough; skill.skillStatus = ActiveSkillStatus.None; if (isManaEnough) { if (!validTint.gameObject.activeInHierarchy) { validTint.gameObject.SetActive(true); } if (!validTint.animation.isPlaying) { validTint.animation.Play("default", 0); } } else { validTint.gameObject.SetActive(false); } } manaConsume.color = isManaEnough ? Color.white : Color.red; }); for (int i = 0; i < skillButtonContainer.childCount; i++) { ActiveSkill activeSkill = Player.mainPlayer.attachedActiveSkills[i]; if (activeSkill.skillId == skill.skillId) { continue; } ActiveSkillButton activeSkillButton = skillButtonContainer.GetChild(i).GetComponent <ActiveSkillButton>(); bool manaEnough = Player.mainPlayer.mana >= activeSkill.manaConsume; activeSkillButton.manaConsume.color = manaEnough ? Color.white : Color.red; if (activeSkill.skillStatus != ActiveSkillStatus.Cooling) { activeSkillButton.mask.enabled = true; activeSkillButton.button.interactable = false; activeSkillButton.mask.fillAmount = 1f; activeSkill.coolenPercentage = 100; activeSkill.skillStatus = ActiveSkillStatus.Waiting; } activeSkillButton.validTint.gameObject.SetActive(false); } }); }