/// <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); } }